我使用了一个按钮来创建一组文本框,如下所示:
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都在一行表中?
欢迎任何帮助。
答案 0 :(得分:0)
首先:我认为您正在寻找DataGrid
。
如果没有,则需要采取几个步骤。首先,textbox1
和textbox2
是类的成员而不是方法,因此每次单击都会一次又一次地编辑相同的TextBox。要创建新的TextBox,请使用
TextBox newBox = new TextBox();
在方法内部并继续使用它而不是this.textbox1
(或textbox2
)。请记住,每次单击按钮时都应更改为TextBoxes的位置,以使它们不重叠。您可以使用类变量作为点击次数。
我认为最简单的方法是将创建的TextBox存储在一个集合中,例如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