2

デザインのテキストボックスをダブルクリックすると、自動的に魔法のようにメソッドが作成されます。いずれの場合も同じことが起こるようにしたいので、以下のコードのように、それぞれから補助メソッドを呼び出すだけです。

private void TextBox_1_TextChanged(object sender, EventArgs e)
{
  TextChanged();
}

private void TextBox_2_TextChanged(object sender, EventArgs e)
{
  TextChanged();
}

private void TextChanged(object sender, EventArgs e) { ... }

ここで、アクションリスナーを同じメソッドに接続して迂回をスキップする方法があるかどうかを知りたいです(デザインファイルに入る以外に(その中の情報によると、試みるべきではありません)。自動生成されたもの。

4

6 に答える 6

3

デザイナページで[イベント]タブに移動し、探しているイベント(TextChanged)を見つけて、すべてのイベントハンドラーで使用するイベントハンドラーの名前を手動で入力します。

于 2012-09-17T13:21:46.210 に答える
3

コントロールが実行時に変更されない場合(つまり、フォーム内のすべてのコントロールが設計時に追加される場合)、私は通常、プロジェクトでこのように進めます。

// this is the container's ctor
public MyForm()
{
    TextBox1.TextChanged += new EventHandler(UniqueHandler);
    TextBox2.TextChanged += new EventHandler(UniqueHandler);
    ...
    TextBoxN.TextChange += new EventHandler(UniqueHandler);
}

void UniqueHandler(object sender, EventArgs e)
{
    TextBox source = (sender as TextBox);
    // handle the event!
}

コントロール変更される場合、それは実際には非常に似ています。それはctorでは発生しませんが、オンサイトで発生します。

// anywhere in the code
TextBox addedAtRuntime = new TextBox();
addedAtRuntime.TextChanged += new EventHandler(UniqueHandler);
MyForm.Controls.Add(addedAtRuntime);
// code goes on, the new textbox will share the handler
于 2012-09-17T13:26:28.150 に答える
1

プロパティの折りたたみ(ほとんどの場合、画面の右側)には、雷のアイコンが表示されます。ここで、すべてのイベントを参照できます。

プロパティが表示されない場合は、対象のコンポーネント(この場合はテキストボックス)を選択し、マウスを右に動かして、コンテキストメニューで[プロパティ]を選択します。

于 2012-09-17T13:27:47.760 に答える
0

あなたはこの方法でそれを行うことができます:

 void btn1_onchange(object sender, EventArgs e)
  {
    MessageBox.Show("Number One");
  }

  void btn1_onchange2(object sender, EventArgs e){
    MessageBox.Show("Number Two");
  }

  public MyForm() {


    Button btn1 = new Button();
    btn1.Text = "Click Me";
    this.Controls.Add(btn1);

    btn1.TextChange += new EventHandler(btn1_onchange);
    btn1.TextChange += new EventHandler(btn1_onchange2);
  }
于 2012-09-17T13:25:27.763 に答える
0

あなたはデザイナーの視点でそれを行うことができます。要素をダブルクリックする代わりに、ボタンのプロパティに移動し、[イベント]タブを選択して、適切なイベントの適切なハンドラー名を入力します。出来上がり!

于 2012-09-17T13:42:57.673 に答える
-1

次の手順を実行します:

  1. InitializeComponent()に移動します。
  2. 各テキストボックスには3つのイベントが添付されています。

そこにあなたは以下を見ることができるはずです。

this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);

これを次のように置き換えます

this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox1_TextChanged);

次に、以下のメソッドを削除します

private void TextBox_2_TextChanged(object sender, EventArgs e)
{
  TextChanged();
}
于 2012-09-17T13:29:03.017 に答える