2011-10-04 47 views
0

我正在尝试编写代码以创建动态文本框。c#以第二种形式创建动态文本框

我有功能类,并在我指定的程序第二种形式ProductForm.cs

我想要做的是与我Function.cs名为GetSpecs功能,比内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

您添加控件到目前的形式:this.Controls.Add(tb);,你需要将它们添加到其他形式的:

form2.Controls.Add(tb); 
+0

非常感谢。你是对的。它解决了我现在正在工作的问题! –

3

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

+0

+1 - 你需要的形式的其他实例。顺便说一下,将UI组件放在其他UI组件上并不是好设计。它创建耦合。 @Val:阅读MVC。 – bryanmac

+0

非常感谢大家。你解释得很好。我不好意思看到这个错误。你们都是我的超级英雄。 –