在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
但是当我在我的按钮上添加click事件时,我收到以下错误:
Cannot implicitly convert type 'System.EventHandler' to 'System.Windows.RoutedEventHandler'
以下是按钮的点击事件方法:
private void btn_Click(object sender, EventArgs e)
{
textbox1.text = "ABC"; // For Example
}
我不明白为什么会出现这个错误。 请建议我,等待回复。 感谢。
答案 0 :(得分:8)
您的事件处理程序的签名是错误的。
应该是:
private void btn_Click(object sender, RoutedEventArgs e)
Click
事件分配应更改为:
btn.Click += new RoutedEventHandler(btn_Click);//Click event
答案 1 :(得分:1)
您需要使用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 and Loaded。
为路由编写处理程序之间最值得注意的区别 事件与一般公共语言运行时(CLR)事件相反 事件的发送者(处理程序所在的元素) 附加和调用)不能被认为是必然的 事件的来源。该来源被报告为事件中的财产 数据源)。发送者和源之间的差异是结果 在遍历期间,事件被路由到不同的元素 路由事件通过元素树。
链接到msdn。
答案 2 :(得分:0)
按钮点击是Patrick Hofman提到的路由事件。
如果只是写作不想要新活动,你甚至可以缩短 btn.Click + = btn_Click;