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

C# 怎么子窗体调用父窗体的控件
C#怎么在子窗体中修改父窗体中控件的属性?????

------解决方案--------------------
在子窗体里添加一个父窗体类型的属性,在父窗体启动子窗体的时候使用this(指父窗体)传到子窗体的该属性上,然后通在子窗体中通过这个属性来访问父窗体上的公开的(public)成员,比如方法、属性、控件等,其实对于父窗体上的控件,可以通父窗体.Controls访问到要修改的子控件而不用刻意去把那个控件设置成Public。
------解决方案--------------------
一种方法是检索窗口,获得父窗口句柄后再操作.
另一种方法是发送自定义消息给父窗口,委托父窗口完成.

??这里不是VC/MFC区吗..
------解决方案--------------------
如果是在两个无关的窗体间要实现上述的访问可以使用Form的Owenr属性 
在Form1中添加: 
Form2 form2 = new Form2(); 
this.AddOwnedForm(form2); 
在Form2中添加: 
Form1 form1 = (Form1)this.Owner; //直接将已经存在的Form1与form1关联起来 
之后就可以适时的访问Form1中的Public变量了 
如果是在MDI窗体间要实现上述的访问可以使用Form的ParentForm属性 
在Form1中添加: 
Form2 form2 = new Form2(); 
form2.MdiParent = this; 
在Form2中添加: 
Form1 form1 = (Form1)this.ParentForm; //直接将已经存在的Form1(MDI主窗口)与form1关联起来 
之后就可以适时的访问Form1中的Public变量了 

------解决方案--------------------
探讨
在子窗体里添加一个父窗体类型的属性,在父窗体启动子窗体的时候使用this(指父窗体)传到子窗体的该属性上,然后通在子窗体中通过这个属性来访问父窗体上的公开的(public)成员,比如方法、属性、控件等,其实对于父窗体上的控件,可以通父窗体.Controls访问到要修改的子控件而不用刻意去把那个控件设置成Public。

------解决方案--------------------
.NET窗体间共享成员的实现方法
------解决方案--------------------
引用在子窗体里添加一个父窗体类型的属性,在父窗体启动子窗体的时候使用this(指父窗体)传到子窗体的该属性上,然后通在子窗体中通过这个属性来访问父窗体上的公开的(public)成员,比如方法、属性、控件等,其实对于父窗体上的控件,可以通父窗体.Controls访问到要修改的子控件而不用刻意去把那个控件设置成Public。

------解决方案--------------------
如果想获得极大的灵活性还得用使用委托和回调函数。
------解决方案--------------------
1.构造函数中传递参数。
2.通过事件调用。
初学者用方法1比较好。
//父窗体中
Form child=new Form(this) //this是指父窗体
child.show();
//子窗体中
Form parent;
public child(Form parent)
{
this.parent=parent;
}
//子窗体事件中
parent.属性调用就可以了