如何解决'编译器错误-无法从方法组转换为System.Delegate'?

问题描述 投票:12回答:3
 public MainWindow()
 {
    CommandManager.AddExecutedHandler(this, ExecuteHandler);
 }

 void ExecuteHandler(object sender, ExecutedRoutedEventArgs e)
 {
 }

错误1参数2:无法从'方法组'转换为'System.Delegate']

c# delegates
3个回答
15
投票

我想有多个具有不同签名的ExecuteHandler。只需将处理程序转换为您想要的版本即可:

CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler);

3
投票

您不能直接传递“方法”作为参数,您需要传递一个表达式。您可以将方法包装到委托中:

CommandManager.AddExecutedHandler(this, new ExecutedRoutedEventHandler(ExecuteHandler));
CommandManager.AddExecutedHandler(this, (Action<object,ExecutedRoutedEventArgs>) ExecuteHandler);

或放入 –这是我个人最喜欢的,因为您不需要记住代表姓名:CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e));


0
投票
由于完全不同的问题,我收到此错误。
© www.soinside.com 2019 - 2024. All rights reserved.