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