我在winforms表单上有一系列5个文本框,用于收集字符串形式的数据。我打算以多种方式使用这些框,从清除每个框的内容的方法,到在导出到文本文件之前从每个框中提取数据进行检查的方法。
为了做到这一点,我计划创建一个List<Textbox>,它实际上是所有5个框的列表,这样我以后就可以使用如下代码
foreach(Texbox box in *texboxList*)
{
box.Clear()
} 等。
到目前为止,我唯一的想法是创建一个单独的方法,它将所有的方框添加到一个列表中,然后以某种方式将该方法的结果作为参数传递给相关的方法,比如那些清除方框的方法。我目前拥有的代码如下所示。
public List<TextBox> Clear_entered_data()
{
List<TextBox> textBoxes = new List<TextBox>();
textBoxes.Add(tbox1);
textBoxes.Add(tbox2);
textBoxes.Add(tbox3);
textBoxes.Add(tbox4);
textBoxes.Add(tbox5);
return textBoxes;
}这是我用来生成要使用的文本框列表的代码。我认为我遇到的问题是理解如何通过参数将其传递给其他方法。我想使用这个列表的方法如下所示,因为到目前为止我已经有了它。
private void Clear_button_Click(object sender, EventArgs e, List<TextBox> textBoxes)
{
DialogResult Clear_validation = MessageBox.Show("Are you sure you would like to clear all data from the form?","Clear data?", MessageBoxButtons.YesNo);
if(Clear_validation == DialogResult.Yes)
{
foreach (TextBox box in textBoxes)
{
box.Clear();
}
}
}使用上面的代码,我在运行以下命令时得到错误:
‘错误1 'Clear_button_Click’没有重载与委托‘System.EventHandler’匹配‘’
但是我没有运气,请试着解释一下哪里出了问题,并帮助我找到更合适的解决方案!
谢谢
发布于 2015-12-09 01:52:15
创建文本框列表List<TextBox> _textBoxes;的私有类成员
然后,在调用InitializeComponents之后(因为在此之前,如果使用集成开发环境创建文本框,则文本框并不存在)将代码添加到列表中
_textBoxes = new List<TextBox>();
_textBoxes.Add(tbox1);
_textBoxes.Add(tbox2);
_textBoxes.Add(tbox3);
_textBoxes.Add(tbox4);
_textBoxes.Add(tbox5);现在,您可以在方法中使用包含所有创建的TextBox的_textBoxes
您的公用分发名单Clear_entered_data()成为
public List<TextBox> ClearTextBoxes() {
foreach(var textBox in _textBoxes){
textBox.Clear();
}
}发布于 2015-12-09 01:53:29
如果你使用了命名约定,你可以像这样迭代表单的控件集合--在我的例子中,所有的名字都以“SpecialTextBox”开头:
foreach(Control c in someFormReference.Controls)
{
if (c.GetType() == typeof(TextBox) && c.Name.StartsWith("SpecialTextBox"))
{
// do your thing here
}
}https://stackoverflow.com/questions/34162504
复制相似问题