Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除在单击按钮时动态创建的文本框_C#_Visual Studio 2012 - Fatal编程技术网

C# 删除在单击按钮时动态创建的文本框

C# 删除在单击按钮时动态创建的文本框,c#,visual-studio-2012,C#,Visual Studio 2012,我尝试过使用列表动态创建文本框。我现在需要的是,如何通过点击重置按钮重置我创建的所有文本框 以下是我的代码: public void button2_Click_1(object sender, EventArgs e) { int number = Convert.ToInt32(textBox2.Text); List<TextBox> inputTextBoxes; inputTextBoxes = new List<TextBox>();

我尝试过使用列表动态创建文本框。我现在需要的是,如何通过点击重置按钮重置我创建的所有文本框

以下是我的代码:

public void button2_Click_1(object sender, EventArgs e)
{
    int number = Convert.ToInt32(textBox2.Text);

    List<TextBox> inputTextBoxes;
    inputTextBoxes = new List<TextBox>();

    for (int i = 1; i <= number; i++)
    {
        Label labelInput = new Label();
        TextBox textBoxNewInput = new TextBox();

        labelInput.Text = "Activity No: " + i;
        labelInput.Location = new System.Drawing.Point(30, textBox2.Bottom + (i * 40));
        labelInput.AutoSize = true;

        textBoxNewInput.Location = new System.Drawing.Point(labelInput.Width+60, labelInput.Top - 3);

        inputTextBoxes.Add(textBoxNewInput);

        this.Controls.Add(labelInput);
        this.Controls.Add(textBoxNewInput);
    }
}
答案是:

 private void resetButton_Click(object sender,EventArgs e)
 {
     for (int i = 0; i <= inputTextBoxes.Length; i++)
     {
         inputTextBoxes[i].Text = "";
     }
 }

您应该声明InputTextBox是一个类成员,它与按钮的“类”相同。

将下面的行移到事件处理程序函数之外的函数之外,但移到类内部

列出输入框

然后在“重置”按钮上单击

私有无效btnReset\u单击对象发送者,事件参数e { InputTextBox中的foreachTextBox txt { this.Controls.removext; } 输入文本框。清除; }


编辑:更正了foreach循环中从按钮到文本框的类类型

如果你们看到OP问题的标题,他要求删除按钮,而不是清除按钮:只有在从表单foreach中删除按钮控件后,列表才会被清除。。。。。this.Controls.Removebtn。列表将被清除,以便用户下次单击按钮时,列表中只显示在执行过程中创建的新按钮。很快,我键入了button而不是TextBox。我做了更正。如果那些对此答案不屑一顾的人能投上一票,我将不胜感激。@Grantwiney:您如何确保从控件集合中删除的正在访问的文本框是动态添加的文本框,而不是任何其他静态文本框。仅出于这个原因,您应该拥有动态添加的文本框列表。此外,当列表处于类级别时,不清除列表不会导致任何异常或错误,但循环将针对控件集合中不存在的旧文本框运行。此外,由于这些文本框仍被该“列表”引用,因此在表单关闭之前不会对其进行垃圾收集。