mon*_*can 9 .net datagridview rows autoresize
我正在尝试自动调整行的高度,我发现它非常具有挑战性.
我已经设置了这个属性:
DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells.
Run Code Online (Sandbox Code Playgroud)
我也用其他方法制作了它:
DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders)
Run Code Online (Sandbox Code Playgroud)
并且还逐行使用:
DataGridView.AutoResizeRow(i, DataGridViewAutoSizeRowMode.AllCells)
Run Code Online (Sandbox Code Playgroud)
甚至还将行的高度硬编码到一个很大的值,它也无法正常工作!所有行都以默认高度显示.
这些都没有奏效.我的选择已经用完了.
datagridview中的大多数行不需要调整大小.但其中一个充满了这样的价值观:
"a"+"\n"+ b +"\n"+"c"+"\n"+"d"+"\n"+"e"
我的意思是,短期值但不同的行.我必须用不同的线条展示它们,不能一起展示它们.但是datagridview只显示第一个,而所有其他的都隐藏了,因为该行没有自动调整大小.
任何其他方式的想法.
您需要在更改数据后调用resize方法.来自MSDN上的文章DataGridView.AutoResizeRows():
每个方法调用仅调整行高度一次; 如果稍后行的内容发生更改,则行不会自动调整.
这意味着您需要在第一次和任何后续加载网格后调用该方法.如果您在父窗体的控制器中调用此代码,则数据绑定尚未发生,因此数据不存在.
对于使用该DataBindingComplete事件的第一次加载:
dataGridView1.DataBindingComplete += new
DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
}
Run Code Online (Sandbox Code Playgroud)
要稍后更新单元格,您需要自己找到最佳位置.
我已经找到了这个问题的解决方案。我不应该使用网格或行的自动调整大小属性,而应该使用换行模式应用于所有网格的单元格。
DataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True
这适用于所有细胞并且有效。
| 归档时间: |
|
| 查看次数: |
9320 次 |
| 最近记录: |