制作一个事件处理程序来处理约 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);
}
我目前遇到以下问题:我有大约 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);
}