2013年8月18日日曜日

DataGridViewのスクロールバーがおかしくなる

VS2010で自分用のプログラムを書いててDataGridViewの動きがおかしい。

            this.dataGridView1.Rows.Clear();
            DataTable xx;
            xx= データ取得;
            foreach (DataRow viewdr in xx.Rows)
            {
                this.dataGridView1.Rows.Add(viewdr.ItemArray);
            }
とやってるのだがスクロールバーで全部のデータが見られない。
ヘッダーカラムをクリックしてソートしたり、カーソルキーなどで移動すると全部できる。

DataGridViewのスクロールバーエラーとかで、いろいろ検索してみると。
.VirtualMode = True
.VirtualMode = False

とするといいとかある。
.ScrollBars = ScrollBars.None;
.ScrollBars = ScrollBars.Both;
で、治ったとか。
なんか、おまじないくさくてやだ。
リフレッシュそたらなおるのかな?と思って
            this.dataGridView1.Refresh();
としてみるが、ダメ。
おまじないにしないとだめかなと思ったところでちょっと思いつく。
            this.dataGridView1.SuspendLayout();
            this.dataGridView1.Rows.Clear();
            DataTable xx;
            xx= データ取得;
            foreach (DataRow viewdr in xx.Rows)
            {
                this.dataGridView1.Rows.Add(viewdr.ItemArray);
            }
            this.dataGridView1.ResumeLayout();
で解決。描画を止めて、セットしてから描画するという手段で回避しました。
きっと、この動作自体はバグなんでしょうね
これも、おまじないだが自分の気分的にはこちらのほうがいい。

1 件のコメント:

  1. 通りがかりの者です。

    同様な現象で悩んでおりました。貴方様のおかげで解決出来ました。

    ありがとうございます。

    返信削除