エラーが発生しやすいため、このアプローチはお勧めしません。それらの名前を変更したい場合、これを忘れて 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
}
編集:
TextBoxes は複数の 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 with RegularExpression
)。