2009-05-01 4 views
1

私はプログラムでデータを追加するDataGridViewを持っています。 AutoSizeRowsMo​​deをAllCellsに設定し、WrapModeをRowsDefaultCellStyleに設定してTrueに設定します。 DataGridViewに複数行を追加すると、複数の行を表示するために行が自動拡大されます。しかし、複数行のデータを持つ列を非表示にすると(列には1行のデータしか残らない)行は1行にサイズ変更されますが、非表示の列を再表示すると行のサイズが変更されません。フォームのサイズを変更すると、行が修正されます。C#DataGridView AutoSizeRowsMo​​de問題

次のコードは、列の可視性をどのように切り替えるかを示しています。 notificationDataGridView.Columns [1] .Visible =!notificationDataGridView.Columns [1] .Visible;

誰でもこの問題を解決する方法を教えてください。私は考えることができるInvalidateとRefreshのすべての組み合わせを試しました。

答えて

1

これはDataGridViewのバグかどうかわかりませんが、ここでは動作させるためのハックがあります。呼び出し後:なぜ

notificationDataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.NotSet; 
notificationDataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True; 

は私に聞かないでください、これは動作するようです:

notificationDataGridView.Columns[1].Visible = !notificationDataGridView.Columns[1].Visible; 

次の2行のコードを追加します。誰かがより良い解決策を持っているなら、投稿してください!

+0

このメソッドでは、複数行のセルでキャリッジリターンを失いました。 @Russの答えは私のために働いた。 –

2

行の高さが正しくサイズ変更されないという同様の問題が発生しました。私のDataGridViewでは、CellFormattingイベントを使用して、AutoSizeRowsMo​​de = AllCellsとDefaultCellStyle.WrapMode = DataGridViewTriState.Trueを関連する列に持つDataGridViewTextBoxColumnにカスタムデータを書き込みます。私は余分な行を追加するには、その列のセルテキストで\ r \ nを使用します。行の1つに余分な行を追加するためにデータを変更すると、行のサイズが変更されず、余分な行が表示されませんでした。 上記の回避策を試して行の高さを強制的に再描画しようとしましたが、動作しませんでした。以下の厄介な問題を回避するにはかかわらず、私のために働くんでした:

dataGridView.Width++; 
dataGridView.Width--; 

不思議このハックは幅だけではなく、高さをリセットして働きました。