.Net 5 上有一个带有 DataGridView 的 WinForms 项目。我需要以编程方式更改表格中行的高度(除此之外,设置的值保存在用户的配置中,并在加载表单时应用于 DataGridView)。为了解决这个问题,DataGridView 实例属性AutoSizeRowsMode和DefaultCellStyle的值。WrapMode 以编程方式更改如下内容:
private void setWrapOn()
{
dataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
}
private void setWrapOff()
{
dataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.NotSet;
dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
dataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
}
如您所见,它仅在一个方向上起作用,即 如果在加载表单时设置了平移和自动选择行高,则根据需要显示。当您关闭行翻译和自动选择时,一切正常,但不想朝相反的方向发展。
我尝试在设置这样的值后更新表(在各种序列和选项中):
dataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
dataGridView.Invalidate();
dataGridView.Refresh();
dataGridView.Update();
dataGridView.Visible = false;
dataGridView.Visible = true;
我还尝试从 DataGridView 继承来调用受保护的方法AutoResizeRow(DataGridViewAutoSizeRowsMode, Boolean)。假设当作为第二个参数传递时,true新高度将根据列的当前宽度计算。
还尝试更新数据绑定也没有效果。
如何以编程方式启用和禁用 DataGridView 中的自动行高调整?

根据@AlexanderPetrov 的建议,我将发布解决方案作为答案。方法
科学戳反复试验确定除了设置DefaultCellStyle。WrapMode也必须设置为RowsDefaultCellStyle。WrapMode (但没有 DefaultCellStyle.WrapMode 也可以):即使此方法有效,我仍将感谢有知识的人澄清有关此行为的评论。