我的问题很简单——数据绑定后我想设置所有列的宽度,这样它就不会水平滚动。像这样的东西:
columnWidth = grid.width/grid.Columns.Count
但是这个表达式不考虑我可以选择行的“gridView 的左侧部分”,它显示当前行。如何计算它的宽度?[(grid.width - X)/grid.Columns.Count]
我的问题很简单——数据绑定后我想设置所有列的宽度,这样它就不会水平滚动。像这样的东西:
columnWidth = grid.width/grid.Columns.Count
但是这个表达式不考虑我可以选择行的“gridView 的左侧部分”,它显示当前行。如何计算它的宽度?[(grid.width - X)/grid.Columns.Count]
很容易做到这一点。只需将DataGridView.AutoSizeColumnMode属性设置为Fill
.
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
您可能需要明确要求网格调整列间距。我记不清了。但这很简单:
grid.AutoResizeColumns();
根据文档,Fill
将执行以下操作:
列宽调整,以便所有列的宽度完全填满控件的显示区域,只需要水平滚动以保持列宽高于 DataGridViewColumn.MinimumWidth 属性值。相对列宽由相对 DataGridViewColumn.FillWeight 属性值确定。
所以基本上,只要您没有任何带有 a 的列MinimumWidth
会阻止它,这个属性就会完全符合您的要求。
编辑:解决OP的评论:
您始终可以创建一个简单的属性来向您报告该信息。就像是...
public int DataGridViewDeadSpaceWidth
{
get
{
int x = grid.Width;
foreach (DataGridViewColumn column in grid.Columns)
x -= column.Width;
return x;
}
}
您还可以使用它从 a 继承DataGridView
并将属性自己添加到控件中。请注意,DataGridView
您需要考虑的边界可能还有一些其他死区。