不能隐式转换类型'System.EventHandler'& # 39; System.Windows.
本文关键字:System Windows EventHandler 转换 不能 类型 | 更新日期: 2023-09-27 18:05:13
在windows phone应用程序中,我想动态地添加一个按钮,如下所示:
Button btn = new Button();
btn.Content = tb_groupname.Text;
btn.Width = 200;
btn.Height = 200;
btn.Click += new EventHandler(btn_Click);//Click event
但是当我在我的按钮上添加点击事件时,我得到以下错误:
Cannot implicitly convert type 'System.EventHandler' to 'System.Windows.RoutedEventHandler'
下面是按钮的click事件方法:
private void btn_Click(object sender, EventArgs e)
{
textbox1.text = "ABC"; // For Example
}
我不明白为什么它得到这个错误。请建议我,等待回复。谢谢。
事件处理程序签名错误。
应该是:
private void btn_Click(object sender, RoutedEventArgs e)
将Click
事件赋值改为:
btn.Click += new RoutedEventHandler(btn_Click);//Click event
您需要使用RoutedEventHandler
(在System.Windows
组件上找到)。
在您的情况下,您应该能够将btn.Click += new EventHandler(btn_Click);
更改为btn.Click += new System.Windows.RoutedEventHandler(btn_Click);
;然后将EventArgs
ob btn_Click更改为RoutedEventArgs
。
确保您添加了System.Windows
程序集的引用,否则它将无法编译!
查看MSDN,我得到了这个:
RoutedEventHandler委托用于任何路由事件不报告事件数据中特定于事件的信息。有许多这样的路由事件;突出的例子包括Click和Loaded。
为路由处理程序编写处理程序之间最值得注意的区别事件,而不是一般的公共语言运行时(CLR)事件事件的发送者(处理程序所在的元素)附加和调用)不能被认为是必然的事件的来源。源被报告为事件中的属性数据(源)。发送方和源之间的差异是的遍历期间,被路由到不同元素的事件通过元素树路由事件。
msdn链接
按钮点击是路由事件,如Patrick Hofman所述。
你甚至可以缩短如果不想要新的事件,只需写btn。点击+= btn_Click;