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

I usually proceed like this in my projects, if controls are not going to change at runtime (i.e. if all controls in the form are added at design time):

// 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!
}

If controls will change, it's actually quite similar, it just doesn't happen in the ctor but on-site:

// 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 回答
3

在设计器页面上,转到事件选项卡,找到您要查找的事件 (TextChanged),然后手动输入您希望它们全部使用的事件处理程序的名称。

于 2012-09-17T13:21:46.210 回答
1

在属性折叠中(通常在屏幕右侧),您应该有一个雷声图标。这就是所有事件都可以参考的地方。

如果您没有看到属性,请选择相关组件(在您的情况下为文本框),右键单击它并在上下文菜单中选择“属性”。

于 2012-09-17T13:27:47.760 回答
0

You can do it by this way:

 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. 每个文本框都附加了三个事件。

在那里你应该能够看到以下内容。

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 回答