使用C#在表单中获取所有文本框名称时使用什么函数?

我想知道如何使用C#获取表单中的所有文本框名称?

这是我生成动态文本框的代码:

private void Form1_Load(object sender, EventArgs e) { for (int i = 1; i <= 5; i++) { TextBox txtbox = new TextBox(); txtbox.Name = "txtbox" + i; flowLayoutPanel1.Controls.Add(txtbox); Label lbl = new Label(); lbl.Name = "lbl" + i; lbl.Text = lbl.Name; flowLayoutPanel2.Controls.Add(lbl); } } private void button1_Click(object sender, EventArgs e) { string[] textBoxNamesArray = this.Controls.OfType() .Select(r => r.Name) .ToArray(); var textboxes = string.Join(",", textBoxNamesArray); MessageBox.Show(textboxes); } 

您可以使用LINQ从当前表单获取TextBox类型的控件的所有名称。 以下查询将返回包含所有名称的字符串数组。

 string[] textBoxNamesArray = flowLayoutPanel1.Controls.OfType() .Select(r => r.Name) .ToArray(); 

记得包括using System.Linq;

我用过this.controls。 您可以转换或添加它。

 for ( int x = 0; x < i; x++ ) { TextBox txtbox= ( TextBox )this.Controls["txtbox" + ( x + 1 ).ToString()]; double commissions = Convert.ToDouble( txtbox.Text ) / 100; } 

如果可以将.NET 4.0与LINQ一起使用,则可以使用以下代码

 ArrayList list = new ArrayList(control.Controls); var names = list.ToArray() .Where(src => src is TextBox) .Select(src => (src as TextBox).Name); 

Habib提供的方法稍微好一些;)