我有一个 DataGridView,我以编程方式向其添加数据。我将 AutoSizeRowsMo​​de 设置为 AllCells,并将 RowsDefaultCellStyle 上的 WrapMode 设置为 True。如果我向 DataGridView 添加多行行,它会显示良好(自动缩放行以显示多行)。但是,如果我隐藏具有多行数据的列(以便剩下的列只有单行数据),则行的大小会调整为单行,但当我重新显示隐藏的列时,行的大小不会调整。如果我调整表单大小,那么行就会正确。

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

谁能帮我解决这个问题吗?我已经尝试了我能想到的所有无效和刷新的组合。

有帮助吗?

解决方案

好吧,我不知道这是否是 DataGridView 中的错误或其他什么,但这里有一个让它工作的技巧。拨打电话后:

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

添加这两行代码:

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

不要问我为什么,但这似乎有效。如果谁有更好的解决方案,请留言!

其他提示

我遇到了类似的问题,行高未正确调整大小。在我的 DataGridView 中,我使用 CellFormatting 事件将自定义数据写入 DataGridViewTextBoxColumn,该列在相关列上具有 AutoSizeRowsMo​​de=AllCells 和 DefaultCellStyle.WrapMode=DataGridViewTriState.True 。我在该列的单元格文本中使用 来添加额外的行。更改数据以向其中一行添加额外的行后,它没有调整大小,因此没有显示我添加的额外行。我尝试了上面的解决方法来尝试强制它重新绘制行高,但它不起作用。不过,以下令人讨厌的解决方法确实对我有用:

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

奇怪的是,这个黑客只能通过重置宽度而不是高度来起作用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top