C# 在DataGridView中移动列,而无需单击两次

C# 在DataGridView中移动列,而无需单击两次,c#,datagridview,datagridviewcolumn,C#,Datagridview,Datagridviewcolumn,通常,要在DataGridView中移动列,只需单击并拖动即可。但是,如果在此操作之前立即滚动(这在移动列时非常常见),则必须在单击并拖动之前单击列。我认为这与DataGridView失去焦点有关,所以我从水平滚动条上收听Scroll类型为EndScroll的事件,并在DataGridView上调用focus()。那是行不通的。有人知道在这种情况下我如何不用额外的点击来移动列吗?这看起来像是一个WinFormsbug 反编译System.Windows.Forms帮助我找到了解决方案:声明一个D

通常,要在
DataGridView
中移动列,只需单击并拖动即可。但是,如果在此操作之前立即滚动(这在移动列时非常常见),则必须在单击并拖动之前单击列。我认为这与
DataGridView
失去焦点有关,所以我从水平滚动条上收听
Scroll
类型为
EndScroll
的事件,并在
DataGridView
上调用
focus()
。那是行不通的。有人知道在这种情况下我如何不用额外的点击来移动列吗?

这看起来像是一个
WinForms
bug

反编译
System.Windows.Forms
帮助我找到了解决方案:声明一个
DataGridView
子类并通过以下方式重写
OnScroll
函数:

protected override void OnScroll(ScrollEventArgs e)
{
    base.OnScroll(e);
    base.OnMouseUp(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0));
}

任何人有什么意见可以把我推向正确的方向吗?