none
DataGridViewで横スクロールバーが非表示に変わった際の表示の不具合 RRS feed

  • 質問

  • DataGridViewで以下のようにします。

    public Form1()
    {
        InitializeComponent();

        this.dataGridView1.AllowUserToResizeColumns = true;
        this.dataGridView1.Columns.Add("A","AA");
        this.dataGridView1.Columns.Add("B","BB");

        for (int i = 0; i < 10; i++)
        {
            this.dataGridView1.Rows.Add();
        }

    }

    ①実行後にカラムの幅を広げ、縦と横のスクロールバーがでるようにします。

    ②縦スクロールバーをスクロールさせ、最終行までスクロールします。(最終行およびその下のグレーの部分まででるように)

    ③カラムの幅を狭くし、横スクロールバーが出ないようにします。

    上記のことを行うと、表示が乱れます。(表示がちゃんとリフレッシュされていない感じで最終行の表示がおかしい)

    一応カラムの横幅変更イベントでthis.refresh()とすれば解決しているようなのですが、

    出来れば確認していただきたい(もしかして、自分の環境依存でしょうか?)と思い、質問させていただきました。


    • 編集済み z_ury 2013年9月11日 16:05
    2013年9月11日 16:04

回答

すべての返信

  • > 出来れば確認していただきたい(もしかして、自分の環境依存でしょうか?)と思い、質問させていただきました。

    ご自分の環境は書けませんか?

    2013年9月11日 23:21
  • 失礼しました。

    Windows7 64bitおよび32bit

    自分の環境では.Net4.5、4.0、3.5のどれを対象にしたコンパイルでも

    発生しました。

    2013年9月12日 1:50
  • 質問者さんとは環境が違いますし(Vista 32-bit, .NET 4, VS2010 Pro)、試したコードも違いますが、① ~ ③ の手順で最下行の表示の乱れは再現できました。環境依存ということはなさそうですね。

    MSDN ライブラリには Invalidate メソッドで再描画を行っているサンプルコードがあります。

    DataGridView.ColumnWidthChanged イベント
    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.columnwidthchanged.aspx

    • 回答としてマーク z_ury 2013年9月13日 13:01
    2013年9月12日 3:46
  • ありがとうございます。

    やはりマイクロソフトの不具合のようですね。

    マイクロソフトが修正してくれることを願いつつ、

    この質問を閉じたいと思います。

    …ちなみに、あと2つくらいDataGridViewのバグらしきものを

    見つけていたりします。ちょっとDataGridViewは使うのが怖いですw。



    • 編集済み z_ury 2013年9月13日 13:04
    2013年9月13日 13:01