计算dataGridView中列的可用宽度

时间:2012-09-24 18:06:45

标签: c# datagridview

我的问题非常简单 - 在数据绑定之后我想设置所有列的宽度,以便它不会是水平滚动。这样的事情:

    columnWidth = grid.width/grid.Columns.Count

但是这个表达式不考虑“gridView的左侧部分”,我可以选择行,显示当前行。如何计算宽度? [(grid.width - X)/grid.Columns.Count]

1 个答案:

答案 0 :(得分:1)

很容易做到这一点。只需将DataGridView.AutoSizeColumnMode属性设置为Fill

grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

您可能需要明确要求网格调整列间距。我不记得了。但这很简单:

grid.AutoResizeColumns();

根据documentationFill将执行以下操作:

  

调整列宽以使所有列的宽度完全相同   填充控件的显示区域,需要水平滚动   只保留列宽在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边框可能还有一些其他死角。