C# 计算dataGridView中列的可用宽度
我的问题很简单——在数据绑定之后,我想设置所有列的宽度,这样就不会出现水平滚动。大概是这样的:C# 计算dataGridView中列的可用宽度,c#,datagridview,C#,Datagridview,我的问题很简单——在数据绑定之后,我想设置所有列的宽度,这样就不会出现水平滚动。大概是这样的: columnWidth = grid.width/grid.Columns.Count 但是这个表达式不考虑我可以选择行的“GRIDVIEW左”部分,它显示当前行。我如何计算它的宽度?[(grid.width-X)/grid.Columns.Count]很容易做到这一点。只需将属性设置为Fill grid.AutoSizeColumnsMode = DataGridViewAutoSizeC
columnWidth = grid.width/grid.Columns.Count
但是这个表达式不考虑我可以选择行的“GRIDVIEW左”部分,它显示当前行。我如何计算它的宽度?[(grid.width-X)/grid.Columns.Count]
很容易做到这一点。只需将属性设置为Fill
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
您可能需要明确要求网格调整列间距。我记不清了。但这很简单:
grid.AutoResizeColumns();
根据,填充将执行以下操作:
列宽将进行调整,以使所有列的宽度精确匹配
填充控件的显示区域,需要水平滚动
仅将列宽保持在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
的边界可能还有一些空白,您需要对此进行解释。这一切都很好。但是如果有时我需要知道这个值,我如何在不进行反向操作的情况下获得它:X=大小-列宽*计数?