2009-05-01 78 views
1

我有一個DataGridView,我以編程方式添加數據。我將AutoSizeRowsMo​​de設置爲AllCells,將RowsDefaultCellStyle上的WrapMode設置爲True。如果我向DataGridView添加多行行,它會顯示正常(自動縮放行以顯示多行)。但是,如果我隱藏具有多行數據的列(以便剩下的列只有單行數據),該行將調整爲單行,但當我重新顯示隱藏列時,行的大小不會調整。如果我調整窗體的大小,那麼行就會正確。C#DataGridView AutoSizeRowsMo​​de問題

以下代碼顯示瞭如何切換列的可見性: notificationDataGridView.Columns [1] .Visible =!notificationDataGridView.Columns [1] .Visible;

任何人都可以幫我解決這個問題嗎?我已經嘗試了每個可以想到的Invalidate和Refresh組合。

回答

1

好吧,我不知道這是DataGridView中的一個錯誤,或者其他什麼,但是這裏有一個破解它的工作。調用後:

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

添加這兩行代碼:

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

不要問我爲什麼,但是這似乎工作。如果有人有更好的解決方案,請發佈!

+0

我用這種方法在多行單元格中丟失了回車符。 @Russ的回答爲我工作。 – 2010-04-20 14:13:23

2

我遇到了行高不正確調整的類似問題。在我的DataGridView中,我使用CellFormatting事件將自定義數據寫入DataGridViewTextBoxColumn,該DataGridViewTextBoxColumn在相關列上具有AutoSizeRowsMo​​de = AllCells和DefaultCellStyle.WrapMode = DataGridViewTriState.True。我在該列的單元格文本中使用\ r \ n來添加額外的行。在更改數據以將其他行添加到其中一行時,它沒有調整大小,因此沒有顯示我添加的額外行。 我試過上面的解決方法,試圖強制它重繪行高,但它沒有奏效。下面討厭的解決方法確實爲我工作:

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

奇怪的是,這種黑客只能通過重置寬度,而不是高度。