在C#程序中使用动态文本框

时间:2016-05-06 22:39:22

标签: c# textbox

我正在尝试根据TextBox1中的数字创建TextBoxes的数量,我想在我的程序中使用每个TextBox值。他们的名字是因为txtbx0,txtbx1 ...但是当我想在我的程序中使用时,它会给出错误“当前上下文中不存在名称'txtbx1'”。我怎样才能在我的程序中使用它们?

 public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int y = Convert.ToInt32(textBox1.Text);
        TextBox[] txtbx = new TextBox[y];
        for (int i = 0; i < y; i++)
        {
            txtbx[i]= new TextBox();
            txtbx[i].Location = new Point(20, i * 50);
            txtbx[i].Size = new Size(100,50);
            txtbx[i].Name = "txtbx"+i.ToString();
            txtbx[i].Text = txtbx[i].Name;
            flowLayoutPanel1.Controls.Add(txtbx[i]);

        }

    }

1 个答案:

答案 0 :(得分:0)

您现在拥有它的方式,可以使用您的数组txtbx[whateverNumber]访问文本框。为了使它们在您发布的方法之外可访问,您需要使txtbx数组成为类成员而不是方法范围的变量。

类似的东西:

class Form1 : Form
{
    TextBox[] txtbx;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int y = Convert.ToInt32(textBox1.Text);
        txtbx = new TextBox[y];  // Now this references the class member
        for (int i = 0; i < y; i++)
        ... etc.
    }
}

通过名称单独访问它们并不可行,因为您必须为每个变量都有类成员变量,但您事先并不知道要制作多少个变量。你正在做的数组方法要好得多。您可以使用txtbx[0]txtbx[numBoxes - 1]以其他方式访问它们。