日期:2014-05-18  浏览次数:20771 次

如何在弹出的子窗体中创建控件?
父窗体代码:

frmSub frmSub =new frmSub;
Button Db = new Button();
Db.Name = "12";
Db.Text = "11111";
Db.Visible = true;
Db.Location = new Point(50, 50);

frmSub.Controls.add(Db);

这样是可以的。
但是我的frmSub中有个panel1,如何把这个Db加到panel1里面??
frmSub.panel1.Controls.add(Db);这样不行。

------解决方案--------------------
其实是可以的,你将frmSub窗体中的panel1设置为public
代码:
frmSub中的代码:
public Panel panel;//自定义panel
public frmSub(){
 panel=panel1;//在构造函数里面,将panel1赋值给自定义的panel,这个panel1就是你窗体中panel的控件
}

在父窗体中:
frmSub frmSub =new frmSub;
Button Db = new Button();
Db.Name = "12";
Db.Text = "11111";
Db.Visible = true;
Db.Location = new Point(50, 50);

frmSub.panel.Controls.add(Db);
------解决方案--------------------
C# code

frmSub frmSub =new frmSub();
Button Db = new Button();
Db.Name = "12";
Db.Text = "11111";
Db.Visible = true;
Db.Location = new Point(50, 50);

(frmSub.Controls["Panel1"] as Panel).Add(Db);

------解决方案--------------------
如果想直接访问panel,可以将panel的modifers属性设置为public,这样就可以

frmSub.Panel1.Controls.Add

------解决方案--------------------
探讨

如果想直接访问panel,可以将panel的modifers属性设置为public,这样就可以

frmSub.Panel1.Controls.Add

------解决方案--------------------
最好的方法就是在FrmSub中公开个方法,比如
public void AddControlToXXPanel(Control myCcontrol)
{
this.panel.Controls.add(myCcontrol);
}