我有一个UserControl
,我需要通知父页面点击了一个按钮UserControl
。我如何在主页中提出事件UserControl
并在主页上捕获它?我尝试使用static
,许多人建议我参加活动。
user677607
问问题
72142 次
3 回答
88
查看事件冒泡——http: //msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx
例子:
用户控制
public event EventHandler StatusUpdated;
private void FunctionThatRaisesEvent()
{
//Null check makes sure the main page is attached to the event
if (this.StatusUpdated != null)
this.StatusUpdated(this, new EventArgs());
}
主页/表格
public void MyApp()
{
//USERCONTROL = your control with the StatusUpdated event
this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated);
}
public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e)
{
//your code here
}
于 2011-05-31T19:55:27.207 回答
7
只需在您的控件中添加一个事件:
public event EventHandler SomethingHappened;
并在您想通知父母时提出:
if(SomethingHappened != null) SomethingHappened(this, new EventArgs);
如果您需要自定义 EventArgs,请尝试EventHandler<T>
使用T
从EventArgs
.
于 2011-05-31T19:56:51.807 回答
1
或者,如果您正在寻找更解耦的解决方案,您可以在此处使用信使发布者/订阅者模型,例如 MVVM Light Messenger
于 2011-05-31T20:05:31.003 回答