I会提出反对这种方法,因为它容易出错。如果你想重命名它们,如果你忘记这个并添加其他控制名称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
}
编辑:
TextBoxes在多个TabPages上。另外,名字有点 更合乎逻辑......
这种方法适用也当控件上的多个的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
开头,只是为了表明您也可以结合条件)
当然,检测相关控件的方式可以根据需要进行更改(与RegularExpression
)。
http://stackoverflow.com/questions/1536739/c-sharp-get-control-by-name – Henry
winforms?哎呀! –