收集在设计中创建的文本框

时间:2012-02-19 00:11:18

标签: c# arrays textbox

我通过drag_n_dropping添加了几个文本框。现在我想在文本框数组下收集它们。我知道如何在代码中创建文本框数组,但不知道如何收集设计期间创建的文本框。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

有时文本框不是直接放在窗体上,而是放在容器控件上,如制表符控件或拆分容器。如果要查找所有这些文本框,递归将有助于

private List<TextBox> _textboxes = new List<TextBox>();

private void GetTextBoxes(Control parent)
{
    foreach (Control c in parent.Controls) {
        var tb = c as TextBox;
        if (tb != null) {
            _textboxes.Add(tb);
        } else {
            GetTextBoxes(c);
        }
    }
}

然后通过将表单作为参数传递来调用GetTextBoxes

GetTextBoxes(this);

这是可能的,因为Form本身来自Control

答案 1 :(得分:2)

这假设您的TextBox在同一GroupBoxPanel

之内
var groupOfTextBoxes = groupBox1.Controls.OfType<TextBox>();
MessageBox.Show(groupOfTextBoxes.Count().ToString());

var textBoxesWithinForm = this.Controls.OfType<TextBox>();
MessageBox.Show(textBoxesWithinForm.Count().ToString());

需要using System.Linq;。请注意textBoxesWithinForm将忽略groupBox内的TextBox,反之亦然。

或者像@Jeff建议但不是通过这个。控制和比较如果Control是Textbox

 foreach (TextBox in this.Controls.OfType<TextBox>())
 {
     //add to your array
 }

答案 2 :(得分:1)

foreach (Control c in this.Controls)
  {
    if (c is TextBox)
    {
       //add to your array
    }
  }