可以单击多个控件之一,但所有控件都具有相同的代码

one of several controls may be clicked but all have the same code

我正在用 C# 做一个 windows 表单。我有一个 groupPanel1,里面有 7 个文本框。每当我单击组面板中的任何文本框时,都会启用面板外的按钮保存 (btnSave)。 有没有办法拥有一个数组或创建一个自定义事件,我单击任何文本框或面板将导致启用保存按钮? 或任何有帮助的东西。

 private void groupPanel1_Click(object sender, EventArgs e)
    {
        btnSave.Enabled = true;
    }

您可以将每个文本框的点击事件设置为相同的方法(启用按钮)。

您可能正在寻找这样的东西:Handling a Click for all controls on a Form

对于您的情况,您不需要递归调用,因为所有文本框都包含在您的 groupPanel 中,您只需将处理程序分配给文本框而不是所有可用控件。这意味着 form_load 事件中的以下(未经测试的)代码应该可以解决问题。

foreach (Textbox t in groupPanel1.Controls.OfType<TextBox>())
{
t.MouseClick += new MouseEventHandler(
  delegate(object sender, MouseEventArgs e)
  {
    btnSave.Enabled = true;
  };
}