0

我的问题很简单——数据绑定后我想设置所有列的宽度,这样它就不会水平滚动。像这样的东西:

    columnWidth = grid.width/grid.Columns.Count

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

4

1 回答 1

1

很容易做到这一点。只需将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您需要考虑的边界可能还有一些其他死区。

于 2012-09-24T18:23:07.263 回答