获取类型和名称的控件

时间:2015-02-20 05:56:38

标签: c# arrays controls

我有一个contols数组(TextBox),它可以获取表单上的所有TextBox。

TextBox[] title = MView.Controls.OfType<TextBox>().ToArray();

是否可以按名称选择它们?

例如,如果我想选择包含&#34; title&#34;的所有TextBox。在名称中,并将其传递到title数组,然后选择包含&#34; data&#34;的所有TextBox。在名称中,并将其传递到单独的data数组?

注意:我没有提到包含&#34;标题&#34;的文本。或&#34;数据&#34;,但TextBox的名称。即txtTitle01txtData01

2 个答案:

答案 0 :(得分:2)

您可以使用Where

LINQ扩展方法
TextBox[] title = MView.Controls.OfType<TextBox>().Where(d=>d.Name.Contains("title")).ToArray();

您还可以添加多个条件

TextBox[] title = MView.Controls.OfType<TextBox>().Where(d=>d.Name.Contains("title") || d.Name.Contains("data")).ToArray();

答案 1 :(得分:0)

因为您需要文本框数组,所以最好将数组命名为titles而不是title。您可以使用Where条件和Lambda表达式来过滤控件。

对于标题:检索名称包含&#34;标题&#34;

的控件
TextBox[] titles = MView.Controls.OfType<TextBox>().Where(c=>c.Name.Contains("title")).ToArray();

对于数据:检索名称包含&#34;数据&#34;

的控件
TextBox[] data = MView.Controls.OfType<TextBox>().Where(c=>c.Name.Contains("data")).ToArray();