使用 DatagridView 滚动保持上下文位置更改

Keep context location change with DatagridView scroll

我有一个数据网格视图,代码是

 DataGridView m_ClientProcessDataGridView = new DataGridView();

我有一个上下文菜单,它是

 ContextMenuStrip contextMenuStripForCells;

右键单击数据网格并将上下文菜单显示为

contextMenuStripForCells.Show(m_ClientProcessDataGridView.PointToScreen(e.Location));

问题是当我滚动时,datagridview 上下文菜单不会随行位置移动,我们是否有任何想法让它随滚动移动?

或者我可以在上下文打开时禁用 datagridview 滚动吗?

滚轮滚动发生在 OnMouseWheel。您可以覆盖该方法并检查 ContextMenuStrip 是否打开,防止滚动:

public class MyDataGridView : DataGridView
{
    protected override void OnMouseWheel(MouseEventArgs e)
    {
        if (this.ContextMenuStrip != null && this.ContextMenuStrip.Visible)
            return;
        base.OnMouseWheel(e);
    }
}