C# 获取类型和名称的控件

C# 获取类型和名称的控件,c#,arrays,controls,C#,Arrays,Controls,我有一个控件数组(TextBox),用于获取表单上的所有文本框 TextBox[] title = MView.Controls.OfType<TextBox>().ToArray(); TextBox[]title=MView.Controls.OfType().ToArray(); 也可以按名称选择它们吗 例如,如果我想选择名称中包含“title”的所有文本框,并将其传递到title数组中,然后选择名称中包含“data”的所有文本框,并将其传递到单独的data数组中 注意:我

我有一个控件数组(
TextBox
),用于获取表单上的所有文本框

TextBox[] title = MView.Controls.OfType<TextBox>().ToArray();
TextBox[]title=MView.Controls.OfType().ToArray();
也可以按名称选择它们吗

例如,如果我想选择名称中包含“title”的所有文本框,并将其传递到
title
数组中,然后选择名称中包含“data”的所有文本框,并将其传递到单独的
data
数组中


注意:我指的不是包含“标题”或“数据”的文本,而是文本框的名称。也就是说,
txttile01
txtData01

您可以使用
其中
的扩展方法
LINQ

TextBox[] title = MView.Controls.OfType<TextBox>().Where(d=>d.Name.Contains("title")).ToArray();
TextBox[]title=MView.Controls.OfType()。其中(d=>d.Name.Contains(“title”).ToArray();
还可以添加多个条件

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

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

对于标题:检索名称包含“title”的控件

TextBox[]titles=MView.Controls.OfType()。其中(c=>c.Name.Contains(“title”).ToArray();
对于数据:检索名称包含“数据”的控件

TextBox[]data=MView.Controls.OfType()。其中(c=>c.Name.Contains(“data”)).ToArray();

您可以通过变量(名称)和控件的
Name
字符串访问
控件
集合。但是,您需要了解区别:
txttile01
不是控件的
名称
!它是指向控件的变量的名称。多个变量可以指向同一
控件
。-
Name
是一个类似于
Text
的字符串属性,它不需要唯一,可以随时更改!
TextBox[] titles = MView.Controls.OfType<TextBox>().Where(c=>c.Name.Contains("title")).ToArray();
TextBox[] data = MView.Controls.OfType<TextBox>().Where(c=>c.Name.Contains("data")).ToArray();