C# - DatagridView和ContextMenu

Eri*_*ika 9 c# datagridview contextmenu

我有一个datagridview,我在其中显示有关产品的信息.我想在用户选择一个单元格然后右键单击该单元格时绑定一个上下文菜单.我有另一个contextmenu,并且一个绑定到datagridview的列.如果用户右键单击上下文菜单显示的列.

我试过这样但是不起作用.上下文菜单显示用户右键单击单元格的时间,但绑定到列标题的上下文菜单不起作用.

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

    }
Run Code Online (Sandbox Code Playgroud)

如何在用户右键单击datagridview时显示?

很多人提前.

编辑

Thnx的答案.我解决了这个问题:

    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);
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

上下文都显示了.当我单击上下文菜单显示的列时,以及单击上下文菜单显示的单元格时.

Dor*_*eka 12

试试这个

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

} 
Run Code Online (Sandbox Code Playgroud)

要么

 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));
   }
} 
Run Code Online (Sandbox Code Playgroud)