ブラウンフィールド開発を行っています。このようなコードで多くの古いフォームを処理する必要があります。フォームのアップグレード時にWinFormsデザイナーがイベントハンドラの割り当てを取り除きます。
//
// Button1
//
Button1.Location = new System.Drawing.Point(556, 447);
Button1.Name = "Button1";
Button1.Size = new System.Drawing.Size(136, 23);
Button1.TabIndex = 112;
Button1.Text = "Restart kontor";
Button1.Click += Button1_Click;
これらのフォームの1つを編集しようとすると、フォームがアップグレードされます。すべての識別子には、 "this"修飾子が前に付けられます。残念ながら、Visual Studio 2015では、ファイル内のすべてのイベントハンドラの割り当てを取り除くだけです。これは、上の例のスニペットの最後の行が単に消えることを意味します。
どうしてですか?それを防ぐための非常に簡単な方法はありますか?
私は、各フォームに対して合理的に迅速に対応できる回避策を見つけました。回避策は回答として掲載されています。これらのフォームを数日から数時間にアップグレードする作業を削減します。
もし誰かが速い方法を知っていれば、おそらく、私は知りたいのですが。壊れたイベントハンドラの割り当てを修正するためにフォーム全体を編集
は
フォームを編集しようとしていますか?デザイナで、またはデザイナで生成されたコードを手動で編集していますか?そのイベントハンドラを最初に追加したのは何ですか?デザイナーがコードを直接所有するのではない限り、デザイナーが生成したコードを手動で編集しないでください。デザイナーはそのコードを所有しています。あなたが行った変更を取り消します。 –
フォームは手動で編集されていません。これはVisual Studioのバグです。 –
それで、 'Button1.Click + = Button1_Click;'コードを生成したのは?私はそのコードを生成するVSのバージョンを見たことはないと思う。あなたはそれがVSによって生成されたと言っている場合は、正確なバージョンを知っていますか? –