首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建用于其他方法的Textbox项列表?

如何创建用于其他方法的Textbox项列表?
EN

Stack Overflow用户
提问于 2015-12-09 01:43:04
回答 2查看 79关注 0票数 1

我在winforms表单上有一系列5个文本框,用于收集字符串形式的数据。我打算以多种方式使用这些框,从清除每个框的内容的方法,到在导出到文本文件之前从每个框中提取数据进行检查的方法。

为了做到这一点,我计划创建一个List<Textbox>,它实际上是所有5个框的列表,这样我以后就可以使用如下代码

代码语言:javascript
复制
foreach(Texbox box in *texboxList*)
{
    box.Clear()
} 

等。

到目前为止,我唯一的想法是创建一个单独的方法,它将所有的方框添加到一个列表中,然后以某种方式将该方法的结果作为参数传递给相关的方法,比如那些清除方框的方法。我目前拥有的代码如下所示。

代码语言:javascript
复制
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;
}

这是我用来生成要使用的文本框列表的代码。我认为我遇到的问题是理解如何通过参数将其传递给其他方法。我想使用这个列表的方法如下所示,因为到目前为止我已经有了它。

代码语言:javascript
复制
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’匹配‘’

但是我没有运气,请试着解释一下哪里出了问题,并帮助我找到更合适的解决方案!

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-12-09 01:52:15

创建文本框列表List<TextBox> _textBoxes;的私有类成员

然后,在调用InitializeComponents之后(因为在此之前,如果使用集成开发环境创建文本框,则文本框并不存在)将代码添加到列表中

代码语言:javascript
复制
 _textBoxes = new List<TextBox>();
 _textBoxes.Add(tbox1);
 _textBoxes.Add(tbox2);
 _textBoxes.Add(tbox3);
 _textBoxes.Add(tbox4);
 _textBoxes.Add(tbox5);

现在,您可以在方法中使用包含所有创建的TextBox的_textBoxes

您的公用分发名单Clear_entered_data()成为

代码语言:javascript
复制
public List<TextBox> ClearTextBoxes() {
    foreach(var textBox in _textBoxes){
       textBox.Clear();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2015-12-09 01:53:29

如果你使用了命名约定,你可以像这样迭代表单的控件集合--在我的例子中,所有的名字都以“SpecialTextBox”开头:

代码语言:javascript
复制
foreach(Control c in someFormReference.Controls)
{
    if (c.GetType() == typeof(TextBox) && c.Name.StartsWith("SpecialTextBox"))
    {
        // do your thing here
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34162504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档