gpt4 book ai didi

C# - DatagridView 和上下文菜单

转载 作者:太空狗 更新时间:2023-10-29 17:43:50 27 4
gpt4 key购买 nike

我有一个数据 GridView ,可以在其中显示有关产品的信息。我想在用户选择一个单元格然后右键单击该单元格时绑定(bind)一个上下文菜单。我有另一个上下文菜单,该菜单绑定(bind)到 datagridview 的列。如果用户右键单击上下文菜单显示的列。

我试过了,但是不行。上下文菜单在用户右键单击单元格时显示,但绑定(bind)到列标题的上下文菜单不起作用。

   private void GridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
productContextMenu.Show(GridView1, e.Location);
}

}

我如何做到这一点,以便当用户右键单击 datagridview 时显示出来?

非常感谢。

编辑

感谢答案。我这样解决了这个问题:

    private void GridView1_MouseUp(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo hitTestInfo;
if (e.Button == MouseButtons.Right)
{
hitTestInfo = GridView1.HitTest(e.X, e.Y);
if (hitTestInfo.Type == DataGridViewHitTestType.Cell)
{
productContextMenu.Show(GridView1, e.Location);
}

}
}

上下文菜单均显示。当我单击上下文菜单显示的列时,以及当我单击上下文菜单显示的单元格时。

最佳答案

试试这个

 private void dataGridView1_CellMouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
contextMenu.Show(datagridview, e.Location);
}

}

 private void dataGridView_MouseUp(object sender, MouseEventArgs e)
{
// Load context menu on right mouse click
DataGridView.HitTestInfo hitTestInfo;
if (e.Button == MouseButtons.Right)
{
hitTestInfo = dataGridView.HitTest(e.X, e.Y);
// If column is first column
if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 0)
contextMenuForColumn1.Show(dataGridView, new Point(e.X, e.Y));
// If column is second column
if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 1)
contextMenuForColumn2.Show(dataGridView, new Point(e.X, e.Y));
}
}

关于C# - DatagridView 和上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com