2

これは簡単なシナリオです:

フィールド (イベント部分) をダブルクリックして、フォーム上のコントロールにイベントを追加します。しかし、それは不要であると判断し、自動生成されたメソッドを削除します。InitializeComponent()プログラムを実行すると、イベントがまだ に存在するため、そこから削除する必要があるというエラーが表示されます。

それで、イベントを「手動で」削除しないようにする方法はありますか?痕跡を残さずに完全に削除する方法はありますか (特にInitializeComponent())?

更新:また、別の質問が発生しました:

コードからメソッドを削除すると、イベント フィールドのメソッド名が消えます。がこれらのイベントにリンクされている場合InitializeComponent()、空のイベント フィールドで更新されないのはなぜですか?

4

6 に答える 6

2

これを行う最良の方法は、デザイナのプロパティグリッドを使用することです。[リセット]ボタンをクリックするか、テキストを削除するだけで、InitializeComponent()メソッドのイベントフックアップが削除されます。コードビハインドでメソッドが空の場合、メソッドもそこで削除されます。

ここに画像の説明を入力してください

デザイナで誤ってResetを取得した場合や、メソッドがコードの他の部分から参照されている場合に備えて、コードが含まれている場合は、メソッド本体を手動で削除する必要があることは理にかなっています。Visual Studioは、注意を怠る可能性があります。

最初にメソッド本体を削除した場合、メソッド本体への参照が削除されない理由の一部は、コードの切り取りと貼り付けに関係している可能性があります。メソッドをコード内の別の場所に移動したい場合は、メソッドを切り取るという動作によって、メソッドへの参照が切断されます。貼り付けた後、なぜイベントが呼び出されなくなったのか不思議に思うでしょう。繰り返しになりますが、開発者が無関係なコードを追跡することはそれほど難しくないため、注意が必要です。

于 2012-04-25T15:17:52.747 に答える
2

イベント グリッドを再度使用し、挿入したイベントを右クリックする必要があります。
[メニューのリセット] オプションを選択します。これにより、InitializeComponent で割り当てられたイベント ハンドラーと、コード デザイナーのemtpyイベントのコードが削除されます。

イベントでコードを追加しても、Visual Studio は新しいコードを削除しないことに注意してください。

于 2012-04-25T14:53:24.163 に答える
1

デザイナーで、問題のコントロールの [イベント] タブに移動し、不要なハンドラーを持つイベントを選択します。ハンドラの名前を削除します。その後、フォームを再度保存します。

これは、私が思うにメソッド自体を削除しません(おそらく、空であるか、追加されたばかりでない限り)。

アップデート

メソッドがほとんど常に削除されない理由は、別のコントロールのイベントのハンドラーとして使用できるためです。結局のところ、UI では、1 つのイベントのハンドラーを削除するように要求しただけです。すべてのハンドラーがそのメソッドにバインドされているわけではありません。次に、バックエンド コードが汚れている (つまり、保存されていない) かどうかという問題があります。その場合、メソッドが空かどうかのチェックは信頼できません。はい、これらはすべて回避できますが、メソッドを手動で削除することは必ずしも困難ではありません:)そして少なくともこの方法では、VSは実際に保持したいメソッドを削除することはありません.

于 2012-04-25T14:52:35.307 に答える
1

コントロールを選択したら、プロパティ ウィンドウを確認します。小さなフラッシュをクリックすると、イベント (クリックなど) と共にイベントが一覧表示され、イベントの背後に割り当てられたメソッドの名前が表示されます。そのメソッドを削除するだけです。

メソッドが空で、それ以外の場合は使用されていない場合にのみ、メソッドが削除されますが、これは非常に合理的です。結局、そのイベント ハンドラーに多くの作業を行った可能性があります。(注:もう一度試してみたところ、数分前に削除したにもかかわらず、空のメソッドが常に削除されるとは限らないようです。奇妙な。)

于 2012-04-25T14:52:43.107 に答える
0

フォームに戻り、CTRL + Z を押します。

于 2012-04-25T14:56:04.207 に答える