C# DatagridView水平滚动可滚动出精确宽度的列,不应从中间切断
我有一个DataGridview。它有一个dgv_滚动事件。在水平滚动中(在移动滚动条时),我需要它正好与列的宽度齐平。就像我们单击Datagridview滚动条的末端箭头(都在右端和左端)时一样。在Datagridview滚动事件中添加此项C# DatagridView水平滚动可滚动出精确宽度的列,不应从中间切断,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个DataGridview。它有一个dgv_滚动事件。在水平滚动中(在移动滚动条时),我需要它正好与列的宽度齐平。就像我们单击Datagridview滚动条的末端箭头(都在右端和左端)时一样。在Datagridview滚动事件中添加此项 if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll) { e.NewValue = GetColumnOffset(e.NewValue); } 然后定义方法 privat
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;
}
private int getColumnCoffset(int offset)
{
int start=0,end=0;
DataGridViewColumnCollection Columns=dgvBudgetPeriods.Columns;
foreach(Columns.Cast()中的var列,其中(c=>!c.freezed))
{
结束=开始+列宽;
如果(开始)