使用 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);
}
}
我有一个数据网格视图,代码是
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);
}
}