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));
}
任何人有什么意见可以把我推向正确的方向吗?