如何检索动态创建的文本字段的输入值?

时间:2017-12-06 21:15:08

标签: c# arrays winforms dynamic textbox

到目前为止,这是我的代码,其中有一个名为numericUpDown和button的numericupdown项目。一旦用户按下按钮选择一个数字,它就会动态创建字段。

private void createPerson_Click(object sender, EventArgs e)
{    
    Label[] person_Name = new Label[(int)this.numericUpDown.Value];
    TextBox[] person_txtinput = new TextBox[(int)this.numericUpDown.Value];

    for (int i = 0; i < this.numericUpDown.Value; i++)
    {    
        //create person name label 
        Person_Name[i] = new Label();
        Person_Name[i].Location = new System.Drawing.Point(20, 114 + i * 25);
        Person_Name[i].Size = new System.Drawing.Size(120, 15);
        Person_Name[i].Text = (i + 1).ToString() + @")" + "Person Name:";
        this.Controls.Add(Person_Name[i]);

        //create person name textbox
        PersonNameTxtInput[i] = new TextBox();
        PersonNameTxtInput[i].Location = new System.Drawing.Point(140, 114 + i * 25);
        PersonNameTxtInput[i].Size = new System.Drawing.Size(125, 20);
        this.Controls.Add(PersonNameTxtInput[i]);    
    }    
}



 private void save_Click(object sender, EventArgs e)
{
    for (int i = 0; j < this.numericUpDown.Value; i++)
    {
        MessageBox.Show("" + PersonNameTxtInput[i].Text);
    }
}

我的问题是,如何根据用户在按下保存按钮时创建的字段数来获取文本框中的所有值?

我已经尝试在保存按钮监听器中使用代码但是如何使Label[] person_Name = new Label[(int)this.numericUpDown.Value];成为全局变量,以便我可以在保存按钮for循环中访问它。

1 个答案:

答案 0 :(得分:3)

好吧,我不确切地知道你为什么要以这种特殊的方式做这件事,我必须承认它看起来并不是很有效,但你可以做Ryan_L所建议的并重复这一点。控制像这样

for(int i = 0; i < this.Controls.Count; i++)
{
    if(this.Controls[i] is TextBox) //skip buttons and labels
    {
        MessageBox.Show("" + this.Controls[i].Text);
    }
}

现在,关于你的问题如何定义一个全局变量以便你可以在循环的保存按钮中访问它 ...只需在 createPerson_Click 这样的事件:

Label[] person_Name;
TextBox[] person_txtinput;

private void button1_Click(object sender, EventArgs e)
{
    person_Name = new Label[(int)this.numericUpDown.Value];
    person_txtinput = new TextBox[(int)this.numericUpDown.Value];
    //the rest of the code
}

希望这会有所帮助。但是,您可能想重新考虑整个方法。