2014-06-12 149 views
-3

目標:
當您在名稱爲「刪除」的菜單按鈕上點擊listView時,應該執行名爲Test()的方法。執行方法

問題:
我不能讓它發生,因爲我得到一個錯誤消息。

錯誤1,沒有超載的 '測試' 匹配委託 'System.Windows.RoutedEventHandler'

private void lvw_bokade_MouseRightButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    ListView selectedData = (ListView)sender; 

    Passlista myPasslista = (Passlista)selectedData.SelectedItem; 

    System.Windows.Point pt = e.GetPosition(this); 

    if (myPasslista != null && !(System.Windows.Media.VisualTreeHelper.HitTest(this, pt).VisualHit is ScrollViewer)) 
    { 
     ContextMenu myContextMenu = new ContextMenu(); 

     MenuItem menuItem2 = new MenuItem(); 
     menuItem2.Header = "Delete"; 

     myContextMenu.Items.Add(menuItem2); 
     menuItem2.Click += new RoutedEventHandler(Test); 

     myContextMenu.IsOpen = true; 
    } 
} 



private void Test() 
{ 
    MessageBox.Show("ssss"); 
} 
+2

當你得到這樣的錯誤時,你應該做的第一件事做的是將其複製並粘貼到搜索引擎中。如果你這樣做了,那麼你會立即找到幾十個答案。 – Sheridan

回答

3

改變你的方法的簽名相匹配的RoutedEventHandler委託:

private void Test(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show("ssss"); 
} 

根據MSDN,代表的簽名如下所示:

public delegate void RoutedEventHandler(
    Object sender, 
    RoutedEventArgs e 
) 
3

你的方法需要符合這個delegate

public delegate void RoutedEventHandler(
    Object sender, 
    RoutedEventArgs e 
) 

您需要將其更改爲:該方法測試的簽名

private void Test(object sender, RoutedEventArgs e) 
{ 
    MessageBox.Show("ssss");  
} 
-2

變化:

private void Test(object sender, RoutedEventArgs e)