2016-03-21 6 views
1

WindowsフォームのテキストボックスにGotFocusイベントを追加したかったので、this質問に記載されている方法を使用しました。それは動作しますが、アプリケーションを数回実行するとコードの一部が削除され、その理由がわかりません。GotFocusイベントがデザイナー自身を削除し続けるのはなぜですか?

これは、自分自身を削除し続けるコードされています。確かに、それはあなたがデザイナーに触れてはならない理由について別の証拠

txtID.GotFocus += txtID_GotFocus; 
+0

なぜコードの代わりにデザイナーに入れますか? – Shaharyar

+0

Validatingイベントはデザイナに配置すると完全に機能するので、gotfocusイベントも想定しています。私はそれをコード自体に入れ、結果を共有します。ありがとう。 – jmcc

+0

@jmccデザイナーではなくコードにピースを入れてください。 –

答えて

2

イベントハンドラを追加するときにWinFormsデザイナーが使用する表記規則を使用しないために消えます。

GotFocusまたはEnterイベントを使用するかどうかは関係ありません。あなた(あなたのDesigner.cs中)であれば、手動でイベントハンドラをこのように追加します。

txtID.Enter += txtID_Enter; 

それは常にデザイナーからあなたはデザイナーの表面上のコントロールを移動し、次の時間が消えてしまいます。

txtID.GotFocus += new System.EventHandler(txtID_Focus); 
txtID.Enter += new System.EventHandler(txtID_Enter); 

をし、それはデザイナーがコードがあることを期待道だから何も消えないだろう:

あなたは、このようにイベントハンドラを追加する必要があります。

+0

理由はあなたが言ったことです。 –

2

だが、コードを生成し、この警告に注意を払う必要があります。回避策の使用がdo not modify the contents of this method with the code editor.

代わりにEnterイベント(これが推奨されます)。また、フォームのLoadイベントでハンドラを割り当てることもできます。あなたはデザイナーの規則を使用していなかったので、

EDIT
正しくnikitaで言及されている理由、それはです。詳細は彼のanswerを参照してください。

関連する問題