C#DataGridView AutoSizeRowsMode问题

C#DataGridView AutoSizeRowsMode问题,c#,winforms,datagridview,.net-2.0,C#,Winforms,Datagridview,.net 2.0,我有一个DataGridView,我通过编程向其中添加数据。我将AutoSizeRowsMode设置为AllCells,将RowsDefaultCellStyle上的WrapMode设置为True。如果我向DataGridView添加一个多行行,它将显示良好(自动缩放该行以显示多行)。但是,如果我隐藏包含多行数据的列(以便左侧的列仅包含单行数据),则行的大小将调整为单行,但当我重新显示隐藏列时,行的大小不会调整。如果我调整窗体的大小,则行将正确 以下代码显示了如何切换列的可见性: notific

我有一个DataGridView,我通过编程向其中添加数据。我将AutoSizeRowsMode设置为AllCells,将RowsDefaultCellStyle上的WrapMode设置为True。如果我向DataGridView添加一个多行行,它将显示良好(自动缩放该行以显示多行)。但是,如果我隐藏包含多行数据的列(以便左侧的列仅包含单行数据),则行的大小将调整为单行,但当我重新显示隐藏列时,行的大小不会调整。如果我调整窗体的大小,则行将正确

以下代码显示了如何切换列的可见性: notificationDataGridView.Columns[1]。可见=!notificationDataGridView.Columns[1]。可见


有人能帮我解决这个问题吗?我已经尝试了我能想到的失效和刷新的每一种组合。

好的,我不知道这是否是DataGridView中的一个bug或其他什么,但这里有一个方法可以让它工作。在致电:

notificationDataGridView.Columns[1].Visible = !notificationDataGridView.Columns[1].Visible;
添加以下两行代码:

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

别问我为什么,但这似乎有效。如果有人有更好的解决方案,请发布

我遇到了一个类似的问题,行高没有正确调整大小。在DataGridView中,我使用CellFormatting事件将自定义数据写入DataGridViewTextBoxColumn,该列在相关列上具有AutoSizeRowsMode=AllCells和DefaultCellStyle.WrapMode=DataGridViewTriState.True。我在该列的单元格文本中使用\r\n来添加额外的行。在更改数据以向其中一行添加额外的行时,它没有调整大小,因此没有显示我添加的额外行。 我尝试了上面的解决方法,试图强制它重新绘制行高度,但没有成功。不过,以下糟糕的解决方法确实对我有效:

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

奇怪的是,这种方法只通过重置宽度而不是高度来工作。

我用这种方法在多行单元格中丢失了回车符。来自@Russ的答案对我有用。