イベントの2重登録はGUIアプリの割と一般的な問題らしく、
jQueryや、Vueでも同じようなトラブルシュートのFAQを確認できます。
ちょっと悩んでみましたが、
this.button1.Clickに既設のイベントハンドラがあるかどうか?
をチェックできないようなので、以下の様に、
マイナス(-=)した後にプラス(+=)にする方法で
書き直したら上手く行かないでしょうか?
private void Form1_Load(object sender, EventArgs e)
{
this.button1.Click -= new System.EventHandler(this.button_Click);
this.button1.Click += new System.EventHandler(this.button_Click);
}
private void button_Click(object sender, EventArgs e)
{
}
動作確認してみましたが、
イベントハンドラが設定されていない状態で、
マイナス(-=)しても、エラーにはならないようです。
(MyBaseControllerWinのカスタマイズを想定しています)
ただ、
// コントロール検索&イベントハンドラ設定
RcMyCmnFunction.GetCtrlAndSetClickEventHandler2(this, this.MyCreatePrefixAndEvtHndHt(), this.ControlHt);
の部分の修正が大変そうなので、
MyBaseControllerWinにインスタンス・メンバ変数にフラグを追加して、
一度、addControlEventが呼ばれたら、以降スキップすると良いかも知れません。
/// <summary>イベント追加処理フラグ</summary>
private bool IsInitializedEvent = false;
/// <summary>イベント追加処理</summary>
private void addControlEvent()
{
if(!this.IsInitializedEvent)
{
this.IsInitializedEvent = true;
...
}
}
西野
2019年4月9日火曜日 18時32分48秒 UTC+9 masatakashibuya: