DatagridView水平滚动滚动精确的列宽,不应该从中间切断

时间:2013-11-27 17:12:30

标签: c# winforms datagridview

我有一个DataGridview.it有一个dgv_scroll事件。这里在水平滚动(移动滚动条)我需要它应该精确地冲洗列的宽度。就像我们点击Datagridview滚动条的结束箭头(都在右端结束左端)。

1 个答案:

答案 0 :(得分:2)

在DataGridView滚动事件中添加此

if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
{
    e.NewValue = GetColumnOffset(e.NewValue); 
}

然后定义方法

private int GetColumnOffset(int offset)
{
    int start = 0, end = 0;
    DataGridViewColumnCollection Columns = dgvBudgetPeriods.Columns;
    foreach (var column in Columns.Cast<DataGridViewColumn>().Where(c => !c.Frozen))
    {
        end = start + column.Width;
        if (start <= offset && offset < end)
        {
            break;
        }
        start = end;
    }
    return start == offset ? offset : end;
}