c#如何循环文本框,以便每次循环更改文本框?

时间:2013-10-10 14:31:29

标签: c# sql loops textbox while-loop

我对c#很陌生,我正在努力解决这个问题,

我正在尝试创建一个程序,可以使用SQL存储的产品将“items”发送到我在文本框中输入的名称。

我想循环文本框,所以当它循环时,它会从textBox1更改为textBox2等等。我想这样做,因为我有45个texBoxes,循环应该是好的我猜。

这是我尝试过的:

int x = 1;
while (x < 46)
{
    cmd.CommandText = "EXECUTE usp_GiftItem @sendUser, @SendNickname, @receiver, @itemname, @text, @paymentType, @bOutput";
    cmd.Parameters.Clear();
    cmd.Parameters.Add("@SendUser", SqlDbType.VarChar).Value = "123";
    cmd.Parameters.Add("@SendNickname", SqlDbType.VarChar, 50).Value = textBox89.Text;
    cmd.Parameters.Add("@receiver", SqlDbType.VarChar, 50).Value = textbox(x).Text;
    cmd.Parameters.Add("@itemname", SqlDbType.VarChar).Value = textBox80.Text;
    cmd.Parameters.Add("@text", SqlDbType.VarChar, 1024).Value = textBox88.Text;
    cmd.Parameters.Add("@paymentType", SqlDbType.VarChar).Value = "0";
    cmd.Parameters.Add("@bOutput", SqlDbType.VarChar).Value = "1";
    cn.Open();
    cmd.ExecuteNonQuery();
    MessageBox.Show("Item sent", "Success");
    cn.Close();
    x++;
}

问题出在@recivers值

我希望你有一个解决方案。 谢谢,非常感谢

2 个答案:

答案 0 :(得分:4)

TextBox[] textBoxes = new TextBox[] { textBox1, textBox2, ... };
while(x ...)
{
    something[x] = textBoxes[x].Text;
}

答案 1 :(得分:1)

如果你先做一些准备,你可以简化一些事情。例如,您可以创建一个项目数组,其中item的索引是TextBox个数字,而item本身就是一个用于生成粗体部分的对象:cmd.Parameters.Add(“@ blablabla “,type,num )。Value。

所以:

 public class MyData
 {
     public string Text;
     public SqlDbType Type;
     public int Number;

     public MyData(string text, SqlDbType type, int number = 0)
     {
         Text = text;
         Type = type;
         Number = number;
     }
 }

 MyData[] data = new MyData[45] { new MyData("@bOutput", SqlDbType.VarChar), new MyData(...), ... };
 TextBox[] control = new TextBox[45] {textBox1, textBox2, ... };

 for(int i = 0; i < 45; i++)
     cmd.Parameters.Add(data[i].Text, data[i].Type, data[i].Number).Value = control[i].Text;

还有一些事情需要改进,例如,您可能希望在表单(TextBox)上找到它们,而不是枚举form1.Controls。它不是生成数据[] - 而是TextBox.Tag的一部分,您可以在其中解析它然后生成参数。 Number的处理可以是可选的等等。

但这应该会给你一个想法。