簡體   English   中英

如何在用戶控件中引發事件並在主頁中捕獲它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM