UserControl
があり、UserControl
のボタンがクリックされたことを親ページに通知する必要があります。 UserControl
でイベントを発生させ、メインページでキャッチするにはどうすればよいですか? static
を使用してみましたが、多くの人がイベントに行くように勧めました!
イベントバブリングを確認してください- 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());
}
Main Page/Form
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
を使用します。
または、より分離されたソリューションを探している場合は、MVVM Light Messengerなどのメッセンジャーパブリッシャー/サブスクライバーモデルを使用できます here