3

私のwinformでは、フォームのdesigner.csセクションにあります

this.Button1.Text = "&Click";
this.Button1.Click += new System.EventHandler(this.Button1_Click);

form.csで

 private void Button1_Click(object sender, System.EventArgs e)
 {
     //Code goes here.
 }

フォームの一部にツリービューがあり、そのツリービューのコンテンツが展開されたら、上記のボタンの名前を変更して、別のイベントを接続する必要があります

  Button1.Name = "ButtonTest";
  ButtonTest.Click += new System.EventHandler(this.ButtonTest_Click);

ただし、ButtonTestが見つからないと言って失敗します。ボタンの名前を動的に変更し、別のクリックイベントメソッドを呼び出すにはどうすればよいですか?

 private void ButtonTest_Click(object sender, System.EventArgs e)
 {
     //Code goes here.
 }

これがButtonTest_Clickと呼ばれると、名前をButton1に戻す必要があります。何か考えはありますか?

4

2 に答える 2

6

Button1変数名を参照します。Button変数は、プロパティを持つタイプのインスタンスを指しNameます。プロパティの値を変更してNameも、変数の名前は変更されません。ボタンをとして参照する必要がありますbutton1。実際、ボタンのNameプロパティの値を変更することは実際には何もしません。このNameプロパティは、実際にはWindowsフォームデザイナを支援するためにのみ存在します。

イベントハンドラーをあるメソッドから別のメソッドに変更する場合は、最初に元のハンドラーのサブスクライブを解除してから、新しいハンドラーのサブスクライブを解除する必要があります。コードを次のように変更するだけです。

Button1.Name = "ButtonTest";
Button1.Click -= this.Button1_Click;
Button1.Click += this.ButtonTest_Click;
于 2012-08-07T23:59:26.677 に答える
0

これは、いくつかの方法で実行できます。

  1. メニューから:[編集]->[リファクタリング]->[名前の変更]

  2. メソッド名のコンテキストメニュー:リファクタリング->名前の変更

  3. メソッド名にカーソルを置き、Alt + Shift + F10と入力して、[名前の変更]を選択します

  4. メソッド名にカーソルを合わせてF2キーを押します

于 2017-05-10T15:56:15.550 に答える