正在收集设计中创建的文本框
本文关键字:文本 创建 集设计 | 更新日期: 2023-09-27 18:25:00
我通过drag_n_dropping添加了几个文本框。现在我想把它们全部收集到一个文本框数组中。我知道如何在代码中创建文本框数组,但不知道如何收集设计过程中创建的文本框。有人能帮忙吗?
有时文本框不是直接放在窗体上,而是放在容器控件上,如选项卡控件或拆分容器。如果你想找到所有这些文本框,递归将有助于
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
。
这假设您的TextBoxes位于相同的GroupBox
或Panel
中。
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
}
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
//add to your array
}
}