制作一个事件处理程序来处理约 500 个可点击的文本框

Making a single event handler to handle ~500 clickable textboxes

我目前遇到以下问题:我有大约 500 个文本框,我想在单击它们时显示信息,但是对每个文本框单独执行此操作会花费太长时间。

我尝试了以下方法,使用一个包含我的 WinForm 中所有文本框的数组。但是,我似乎无法让它工作。

  var textBoxes = new List<Control>();
            foreach (Control c in Controls)
            {
                if (c is TextBox)
                {
                    textBoxes.Add(c);
                }
            }

foreach(var c in textBoxes)
{ c.Click += textBox_Click();
}

public void textBox_Click(object sender, EventArgs e)
{ string location = c.Text;
MessageBox.Show(location);
}

希望有人能帮帮我,谢谢!

要获取特定类型的所有控件并分配一个事件,您可以这样做

foreach ( TextBox tb in this.Controls.OfType<TextBox>()) 
{
    tb.Click += textBox_Click;   //Note there are no brackets ()     
}

那么你就不需要创建一个单独的数组来存储它们(尽管这也有效,并且可能在其他地方有用)。

然后你需要修改你的点击事件,因为这里有问题,所以你需要像这样将 sender 转换为 TextBox 类型。

 public void textBox_Click(object sender, EventArgs e)
 {
            string location = ((TextBox)sender).Text;
            MessageBox.Show(location);
 }