右键单击datagrid单元格以显示复制菜单(ContextMenu)

时间:2013-11-02 22:46:03

标签: c# winforms datagrid contextmenu

我一直在尝试创建右键单击功能以在C#中显示上下文菜单,但它似乎不起作用。知道为什么吗?

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        ContextMenu m = new ContextMenu();
        m.MenuItems.Add(new MenuItem("Copy"));

        int currentMouseOverRow = dataGridView1.HitTest(e.X, e.Y).RowIndex;

        m.Show(dataGridView1, new Point(e.X, e.Y));
    }
}

1 个答案:

答案 0 :(得分:1)

我不确定您使用的是什么,WPF / WinForms / BlackMagic /等...但似乎每次点击右键都会创建一个新的上下文菜单,这不是&# 39; t附在任何东西上......

ContextMenu MyMenu = new ContextMenu();
MyMenu.MenuItems.Add("Copy");

你应该将它附加到你正在使用的任何控件上(在你的情况下,我想要的网格或行):

SomeGrid.ContextMenu = MyMenu;

在WPF中,在ListBox上使用一个看起来像

<ListBox x:Name="NameYourList"  
      ItemsSource="{Binding SomeItem}"
      SelectedItem="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}"
      >
<ListBox.ContextMenu>
    <ContextMenu>
        <MenuItem Header ="Copy Me" Command="{Binding Copy_Command}" 
                  CommandParameter="{Binding SomeProperty}"
        />
    </ContextMenu>
</ListBox.ContextMenu>