存储动态创建的多个文本框中的数据

本文关键字:数据 文本 动态 创建 存储 | 更新日期: 2023-09-27 18:13:44

我使用了一个按钮来创建一组文本框,如下所示:

public partial class Form1 : Form
    {
        private int a = 75;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.textBox1.Location = new System.Drawing.Point(50, a);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 20);
            this.textBox1.TabIndex = 0;
            this.Controls.Add(this.textBox1);
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.textBox2.Location = new System.Drawing.Point(200, a);
            this.textBox2.Name = "textBox2";
            this.textBox2.Size = new System.Drawing.Size(100, 20);
            this.textBox2.TabIndex = 0;
            this.Controls.Add(this.textBox2);
            this.button1.Location = new System.Drawing.Point(650, a);
            a += 25;
        }
  }

因此,可能会为许多按钮单击创建许多textbox1和textbox2。比如10个textbox1和10个textbox2。我怎么能从他们所有的数据和存储在数据库中。每个textbox1和textbox2是在一行表?

欢迎任何帮助。

存储动态创建的多个文本框中的数据

首先:我想你是在找一个DataGrid

如果没有,则需要采取几个步骤。首先,textbox1textbox2是类的成员,而不是方法,所以每次点击你编辑相同的文本框一次又一次。使用

创建新的文本框
TextBox newBox = new TextBox();  

中的方法,并继续使用它,而不是this.textbox1(或textbox2)。请记住,每次单击按钮时都应该更改为"文本框的位置",这样它们就不会重叠。您可以使用类变量作为点击计数。

我认为最简单的方法是将创建的TextBoxes存储在一个集合中,例如Dictionary:

public partial class...
{
    Dictionary<TextBox, TextBox> tbPairs = new Dictionary<TextBox, TextBox>();
    private void button1_Click(...)
    {
    ... //create newBox1 and newBox2
    tbPairs[newBox1] = newBox2;   //adds the Pair to the Dictionary
    }
}

要在textbox填充后调用Dictionary的内容,请使用

foreach (KeyValuePair<TextBox, TextBox> in tbPairs)  
{  
    ... //write to Server here - but that is an issue too big for handling here - look it up
}

关于如何将数据写入数据库,请查看如何使用SqlCommand s