创建一个可以编辑60个TextBox名称的循环?

文本框set1 = 1到30 =在查询名称中= br1id到br30id

文本框设置2 = 1到30 =在结果输出中

我不明白如何基于30个不同的文本框名称创建一个循环?

我不能复制粘贴这些行30次编辑文本框名称,这看起来只是错误。

try { MySqlConnection mysqlCon = new MySqlConnection( "server= 195.159.253.229;" + "Database = bruker;" + "user id=bobby;" + "password=LoLOW###;"); MySqlCommand cmd1 = new MySqlCommand( "SELECT brukernavn From bruker where ID = '" + br1id.Text + "';", mysqlCon); mysqlCon.Open(); navX[0] = cmd1.ExecuteScalar().ToString(); br1txt3.Text = navX[0]; } 

您将需要使用控件枚举器。

假设这是WinForms:

 foreach(Control c in this.Controls) { if(c is TextBox) Console.WriteLine(c.Text); } 

实际上,我认为这也适用于ASP.Net。 (即使Control位于不同的命名空间中。)

但是!:这就是数据网格的用途。

如果你有600个TextBox控件,你真的应该重新考虑你的设计。 天啊。

此外,您的SQL非常受SQL注入的影响 。

由于在运行时没有对C#进行动态评估,因此无法完成您无法完成的任务。 您需要做的是创建要使用的控件的集合 – 按照您要使用的顺序 – 然后枚举此列表以在查询中使用。 但是,绝对应该重写此查询以使用参数。

以下是如何在Form中按名称获取控件:

  // get control by name: TextBox tb = this.Controls["textBox1"] as TextBox; if (tb != null) { // your code here } 

对所有以前的答案都是,(600个文本框?600个ID和600个以上的查询结果?)但是如果你真的想这样做,作为一种技术,还要将SQL更改为:

 StringBuilder sb = new StringBuilder( "SELECT brukernavn From bruker where ID In ("); foreach(Textbox tb in IdTextboxes) sb.Append(tb.Text + ","); string SQL = sb.ToString(0,sb.Length - 1) + ")"; MySqlConnection mysqlCon = new MySqlConnection("server=195.225.0.218; " + "Database = bruker; user id=huggy; password=LoLOW;"); cmd1 = new MySqlCommand(SQL, mysqlCon);