![](/img/trans.png)
[英]I am trying to raise event at UserControl, and catch it at Main program, But the event always return null
[英]How do I raise an event in a usercontrol and catch it in mainpage?
我有一個UserControl
,我需要通知父頁面UserControl
中的一個按鈕被點擊。 如何在UserControl
中引發事件並在主頁上捕獲它? 我嘗試使用static
,許多人建議我使用 go 進行活動。
查看事件冒泡——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
}
只需在您的控件中添加一個事件:
public event EventHandler SomethingHappened;
並在您想通知父母時提出:
if(SomethingHappened != null) SomethingHappened(this, new EventArgs);
如果您需要自定義 EventArgs,請嘗試使用EventHandler<T>
代替T
繼承自EventArgs
的類型。
或者,如果您正在尋找更解耦的解決方案,您可以在此處使用信使發布者/訂閱者 model,例如 MVVM Light Messenger
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.