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?哎呀! –