执行一个方法

时间:2014-06-12 15:09:14

标签: c# .net wpf

目标:
当您按下名为"删除"的菜单按钮时当你在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");
}

3 个答案:

答案 0 :(得分:3)

更改方法的签名以匹配RoutedEventHandler的代理:

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

根据MSDN

,代表的签名如下所示
public delegate void RoutedEventHandler(
    Object sender,
    RoutedEventArgs e
)

答案 1 :(得分:3)

您的方法需要与此delegate匹配:

public delegate void RoutedEventHandler(
    Object sender,
    RoutedEventArgs e
)

您需要将其更改为:

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

答案 2 :(得分:-2)

将方法测试的签名更改为:

private void Test(object sender, RoutedEventArgs e)