は、各ユーザーコントロールのコンストラクタでは、あなたが呼び出し、次にこの方法 無効armySwitchClose(オブジェクト送信者、EventArgsの電子に)
を実行する方法を知っているいくつかのオブジェクトの同じインスタンスを渡すことができますこのメソッドは、各イベントメソッド内では、例:
Public Class UserControl(){
private MakeEvent makeEvent;
Public MyClass(MakeEvent makeEvent)
{
this.makeEvent = makeEvent;
Switch.armySwitchCloseButton.Click += armySwitchClose;
}
void armySwitchClose(object sender, EventArgs e)
{
makeEvent.armySwitchClose(sender,e);
}
}
Public Class MakeEvent() {
void armySwitchClose(object sender, EventArgs e)
{
//the real implementation
}
}
これはあなたの問題を解決します。
ああ、私はあなたの問題の間違ったを取得すると思う...あなたが1つのボタンでクリックすると他のUC内の他のすべてのイベントがトリガされなければならない、右?この問題は、ボタンUCでObserverパターン
Public Interface IObserver
{
void armySwitchClose(object sender, EventArgs e);
}
Public UserControl1: Observer
{
void armySwitchClose(object sender, EventArgs e)
{
//implementation UC1
}
}
Public UserControl2: Observer
{
void armySwitchClose(object sender, EventArgs e)
{
//implementation UC2
}
}
で解決することができます。フォームで
Public UserControlButton
{
private List<IObserver> observers;
public void addObserver(IObserver observer)
{
observers.Add(observer);
}
public void button_clickedEvent(object sender, EventArgs e)
{
foreach(IObserver observer in observers)
{
observer.armySwitchClose(object sender, EventArgs e);
}
}
}
あなたはaddObserverは、各ユーザーコントロールを追加呼び出すすべてのボタンと。
ユーザコントロールの1つをクリックしたときに 'armySwitchClose'関数を実行するだけでいいですか? – whymatter
usercontrolには3つのボタンがあります。その閉じるボタンは私が模倣しようとしている。 閉じるボタンをクリックすると、タブコントロール内のタブページを閉じる関数が実行されます。 –
すべての閉じるボタンでこのメソッドを実行できますか?閉じるボタンはどのように作成されますか?あなたはrumtimeでそれらを作成しますか? – whymatter