【问题标题】:c# how to while loop textboxes so it changes textbox every loop?c#如何while循环文本框,以便在每个循环中更改文本框?
【发布时间】:2013-10-18 09:12:33
【问题描述】:

我对 c# 还很陌生,我正在为此苦苦挣扎,

我正在尝试制作一个程序,该程序可以使用 SQL 存储产品一次将“项目”发送到我在文本框中键入的名称。

我想 while 循环文本框,以便它在循环时从 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 值

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

【问题讨论】:

  • 反对票的任何 cmet?
  • 虽然我对您使用while 循环的方式没有意见,但for 循环会是更好的选择。您可以创建x,定义循环数,并以一行为单位递增。 for (int x = 1, x &lt; 46, x++) { ...

标签: c# sql loops textbox while-loop


【解决方案1】:

如果你先做一些准备,你可以简化事情。例如,您可以创建一个项目数组,其中项目的索引是TextBox 数字,项目本身是将用于生成粗体部分的对象: cmd.Parameters.Add( "@blablabla",类型,数量 ).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;

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

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

【讨论】:

    【解决方案2】:
    TextBox[] textBoxes = new TextBox[] { textBox1, textBox2, ... };
    while(x ...)
    {
        something[x] = textBoxes[x].Text;
    }
    

    【讨论】:

    • 非常感谢!!它正在工作。 :] 我希望我能投票,但我的声誉只有 1 :s
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多