移动列在DataGridView不点击它两次
本文关键字:两次 DataGridView 移动 | 更新日期: 2023-09-27 18:10:47
通常,要移动DataGridView
中的列,只需单击并拖动。但是,如果在此操作之前立即滚动(如果要移动列,这很常见),则必须在单击-拖动之前单击该列。我认为这与DataGridView
失去焦点有关,所以我从水平滚动条收听EndScroll
类型的Scroll
事件,并在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));
}