2013-11-02 137 views
0

我一直在嘗試創建右鍵單擊功能來調出C#中的上下文菜單,但似乎沒有工作。任何想法爲什麼?右鍵單擊datagrid單元格以彈出複製菜單(ContextMenu)

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

我不知道你使用的是什麼,WPF /的WinForms /的Blackmagic /等...但似乎每右鍵單擊您將創建一個新的上下文菜單,這是不附到什麼...

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> 
+0

我正在創建Windows窗體應用程序 – theshizy

+0

您是否嘗試過前兩位代碼?創建一次上下文菜單,並將其設置在你的對象上? – Noctis

+0

'private void dataGridView1_MouseClick(object sender,MouseEventArgs e) { ContextMenu MyMenu = new ContextMenu(); MyMenu.MenuItems.Add(「Copy」); dataGridView1.ContextMenu = MyMenu; }'<沒有這個 – theshizy