WinForms デザイナーと動作のカスタマイズ方法に関する質問。私が何度も見たのは、ボタンに別のイベント ハンドラーを選択すると、使用されなくなったときに古いもの (コードなど) が削除されるということです。
この動作を回避したいのですが、このための構成が見つかりません。誰でもヒント?ありがとう!
更新 複数のコメントが最初にこれをトリガーするアクションに疑問を呈しているため、既存のコード ベースのリファクタリング中に主に私を襲ったことを指摘したいと思います。
WinForms デザイナーと動作のカスタマイズ方法に関する質問。私が何度も見たのは、ボタンに別のイベント ハンドラーを選択すると、使用されなくなったときに古いもの (コードなど) が削除されるということです。
この動作を回避したいのですが、このための構成が見つかりません。誰でもヒント?ありがとう!
更新 複数のコメントが最初にこれをトリガーするアクションに疑問を呈しているため、既存のコード ベースのリファクタリング中に主に私を襲ったことを指摘したいと思います。
このための構成はありません。デザイナーは正しいことを行い、コードを持たないイベント ハンドラーのみを削除します。メソッド本体に何かを入れるとすぐに、記述した内容が保持され、新しいメソッドが生成されます。これにより、コードが失われず、コードに不要なメソッドが散らばることがなくなります。
同じクラス (フォーム) 内のコントロールのイベントに複数のイベント ハンドラーを追加してもほとんど意味がないことに注意してください。ハンドラのコードをマージするだけです。これにより、同じイベントの複数のサブスクライバーが実行される順序はかなり予測不可能であるため、予期せぬ事態が発生することもありません。デザイナーは、複数のイベント ハンドラーを追跡する方法がないため、1 つのイベント ハンドラーのみをサポートします。
これは Designer が機能する方法であり、変更することはできません。
問題を回避するためにできることは、イベント ハンドラーをデザイナーではなくコードに追加することです。
public Form1()
{
InitializeComponent();
this.button1.Click += new EventHandler(button1_Click);
this.button1.Click +=new EventHandler(button1_Click2);
}
2 つの別個のイベント ハンドラーの必要性について疑問があることを指摘しておく必要があります。