移动列在DataGridView不点击它两次

本文关键字:两次 DataGridView 移动 | 更新日期: 2023-09-27 18:10:47

通常,要移动DataGridView中的列,只需单击并拖动。但是,如果在此操作之前立即滚动(如果要移动列,这很常见),则必须在单击-拖动之前单击该列。我认为这与DataGridView失去焦点有关,所以我从水平滚动条收听EndScroll类型的Scroll事件,并在DataGridView上调用Focus()。但这并没有奏效。有人知道我怎么能移动列没有额外的点击在这种情况下?

移动列在DataGridView不点击它两次

这看起来像是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));
}