c# – WPF – 用户控件内部的事件
发布时间:2020-12-16 01:42:16 所属栏目:百科 来源:网络整理
导读:尝试在 WPF中为自定义控件创建事件时遇到问题.我们的代码如下: public static readonly RoutedEvent KeyPressedEvent = EventManager.RegisterRoutedEvent( "keyPressed",RoutingStrategy.Bubble,typeof(KeyEventHandler),typeof(Keyboard)); public event
尝试在
WPF中为自定义控件创建事件时遇到问题.我们的代码如下:
public static readonly RoutedEvent KeyPressedEvent = EventManager.RegisterRoutedEvent( "keyPressed",RoutingStrategy.Bubble,typeof(KeyEventHandler),typeof(Keyboard)); 解决方法
步骤1:将事件处理程序添加到“确定”和“取消”按钮
private void btnOK_Click(object sender,RoutedEventArgs e) { } private void btnCancel_Click(object sender,RoutedEventArgs e) { } 在UserControl1.xaml.cs文件中添加公共属性以与主机共享文本框的值 public string UserName { get { return txtName.Text; } set { txtName.Text = value; } } 声明可以通过Windows窗体订阅的Ok和Cancel按钮的事件. public event EventHandler OkClick; public event EventHandler CancelClick; 现在将代码添加到事件处理程序,以便我们也可以将事件提升为主机. private void btnOK_Click(object sender,RoutedEventArgs e) { if (OkClick != null) OkClick(this,e); } private void btnCancel_Click(object sender,RoutedEventArgs e) { if (CancelClick != null) CancelClick(this,e); } 第2步:在Windows窗体中处理WPF控件事件 在创建用户控件实例后立即将Handler添加到OKClick和CancelClick Events _WPFUserControl.OkClick += new EventHandler(OnOkHandler); _WPFUserControl.CancelClick += new EventHandler(OnCancelHandler); 在处理程序方法中编写代码.在这里,我在OK按钮处理程序中使用UserName属性,因此也显示了如何共享值. protected void OnOkHandler(object sender,EventArgs e) { MessageBox.Show("Hello: " +_WPFUserControl.UserName + " you clicked Ok Button"); } protected void OnCancelHandler(object sender,EventArgs e) { MessageBox.Show("you clicked Cancel Button"); } 参考: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |