4

VS2008 では、イベント ハンドラーをダブルクリックすると、VS はデフォルトの名前 (combobox1_SelectedIndexChanged など) を持つデフォルトのイベント ハンドラーを作成します。

たとえば、combobox1 の名前を cbStatus に変更したとします。それはまだ同じイベント ハンドラーを持っているので、それを cbStatus_SelectedIndexChanged に変更します。

古いイベント ハンドラーに加えて新しい cbStatus イベント ハンドラーを生成するのではなく、VS が初期のombobox1_SelectedIndexChange を cbStatus_SelectedIndexChange に変更できる方法はありますか? 毎回、コードを切り取って新しいイベント ハンドラーに貼り付けてから、古いイベント ハンドラーを削除する必要があるためです。

さらに、最初のイベント ハンドラーを定義した後、そのハンドラーが不要になった場合、フォーム デザイナーが元のイベント ハンドラーを見つけることができないと文句を言うため、単純にコードからハンドラーを削除することはできません。VS がフォーム デザイナーからイベント ハンドラーの割り当てを自動的に削除できる方法はありますか?

フォーム デザイナー コードからのイベント ハンドラーの割り当ての切り取りと貼り付け、および削除に 1 日を費やしているようです。

4

4 に答える 4

10

コントロールの名前を変更するときは、イベント ハンドラーの名前も変更する必要があります。これを行う適切な方法は、コードをリファクタリングすることです。

これを行うには、Visual Studio コード エディターでイベント ハンドラーの名前を右クリックし、[これにより、使用されているすべての場所Refactor -> Rename...でその名前を自動的に変更できるようになります] を選択します。

イベント ハンドラーの場合、おそらく他の 1 つの場所 (イベントに追加されるコード内のポイント) でのみ使用されるため、手動で変更するのはそれほど面倒ではありません。ただし、この手法はほとんどすべてに適用できるため、変更しようとしているものが複数の異なる場所から参照されている場合に非常に役立ちます。

于 2010-08-11T02:53:39.977 に答える
2

生成されたコード内でcombobox1_SelectedIndexChangeメソッドが宣言されている場所を見つけて、名前を に変更するだけcbStatus_SelectedIndexChangeです。

メソッド名を変更したら、ハンドラーを登録する行も更新する必要があります。

cbStatus.SelectedIndexChange += new
    SelectedIndexChangeEventHandler(cbStatus_SelectedIndexChange);
于 2010-08-11T02:53:29.400 に答える
1

新しい名前を入力してから、再コンパイルしてください。つまり - 変更

protected void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

protected void renamedcombobox_SelectedIndexChanged(object sender, EventArgs e)
{

}

そして再コンパイル

予期されるメソッドが存在しないため、Visual Studio はコンパイル時エラーをスローします。

[出力] ウィンドウでエラーをダブルクリックして、エラー ハンドラーの割り当てに移動し、そこでエラー ハンドラーを変更して新しい関数名と一致させます。

編集 - 追加

上記の手順により、ジャスティンの回答で説明されているコード行にジャンプします...

編集を終了

私はそれが泥のように明らかであることを知っていますが、試してみると、ほとんどまたはまったく問題なく理解できます.

于 2010-08-11T02:52:55.270 に答える
0

ダブルクリックではなくシングルクリックでイベント ハンドラーを自動的に作成する場合は、必要なハンドラー名を指定できます。コンボボックスの変数名に依存しない「SelectedStatusChangedHandler」のようなものにすることができます。次に、「Enter」を押して、VS にハンドラーを作成させます。

于 2010-08-11T02:52:39.323 に答える