我建议不要使用这种方法,因为它容易出错。如果您想重命名它们怎么办,如果您忘记了这一点并添加其他带有 name 的控件e...
怎么办?
相反,我会将它们收集在容器控件中,例如Panel
. 然后你可以使用LINQ
找到相关的TextBoxes
:
var myTextBoxes = myPanel.Controls.OfType<TextBox>();
Enumerable.OfType
将相应地过滤和投射控件。如果你想更多地过滤它们,你可以使用Enumerable.Where
,例如:
var myTextBoxes = myPanel.Controls
.OfType<TextBox>()
.Where(txt => txt.Name.ToLower().StartsWith("e"));
现在你可以迭代那些TextBoxes
,例如:
foreach(TextBox txt in myTextBoxes)
{
String text = txt.Text;
// do something amazing
}
编辑:
文本框位于多个 TabPages 上。此外,名称更合乎逻辑......
当控件位于多个标签页上时,此方法也适用,例如:
var myTextBoxes = from tp in tabControl1.TabPages.Cast<TabPage>()
from panel in tp.Controls.OfType<Panel>()
where panel.Name.StartsWith("TextBoxGroup")
from txt in panel.Controls.OfType<TextBox>()
where txt.Name.StartsWith("e")
select txt;
(请注意,我添加了面板名称必须以 开头的另一个条件TextBoxGroup
,只是为了表明您也可以组合这些条件)
当然,可以根据需要更改检测相关控件的方式(fe 和RegularExpression
)。