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=大小-列宽*计数?