c#以第二种形式创建动态文本框

时间:2011-10-04 12:13:18

标签: c# forms textbox

我正在尝试编写代码以创建动态文本框。

我有Function类,并在我的程序中有一个名为ProductForm.cs

的第二个表单

我想做的是在我的GetSpecsFunction.cs内部使用名为GetSpecs的函数读取一些数据我希望在另一个类中调用函数并将数据发送到我的ProductForm.cs类下的其他功能。

我最后得到的是空白表格。

我的GetSpecs函数的一部分:

private String GetSpecs(String webData)
{
   ......
   ProductForm form2 = new ProductForm();
   form2.CreateTextBox(n);
}

ProductForm.cs

public void CreateTextBox(int i)
    {
        ProductForm form2 = new ProductForm();
        form2.Visible = true;
        form2.Activate();

        int x = 10;
        int y = 10;
        int width = 100;
        int height = 20;

        for (int n = 0; n < i; n++)
        {
            for (int row = 0; row < 4; row++)
            {
                String name = "txtBox_" + row.ToString();
                TextBox tb = new TextBox();
                tb.Name = name;

                tb.Location = new Point(x, y);
                tb.Height = height;
                tb.Width = width + row * 2;
                x += 25 + row * 2;
                this.Controls.Add(tb);

            }
            y += 25;

        }

    }

我得到一个空白的ProductForm形式。文本框未创建或我看不到它们。

如果我把文本框放在

private void ProductForm_Load(object sender, EventArgs e)

我可以看到文本框。

2 个答案:

答案 0 :(得分:3)

您正在创建一个全新的ProductForm实例(在form2变量中),然后将控件添加到this(从未显示过)。

答案 1 :(得分:2)

您要将控件添加到当前表单:this.Controls.Add(tb);,您需要将它们添加到其他表单:

form2.Controls.Add(tb);