トップ回答者
DataGridViewで横スクロールバーが非表示に変わった際の表示の不具合

質問
-
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
回答
-
質問者さんとは環境が違いますし(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
すべての返信
-
質問者さんとは環境が違いますし(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