怎样在子窗体中访问父窗体中的控件

douxulai 2005-02-18 11:51:01
例如:
一个窗体Form1(父窗体),点击某个按钮后弹出窗体Form2(子窗体)
现在需要窗体Form2中的某些属性取自Form1中某些控件的值,
请问怎么才能让Form2能访问到Form1中的控件呢?

谢谢
...全文
473 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ASDC001 2005-02-18
  • 打赏
  • 举报
回复
引用 JasonHeung(拥有一切也只不过这样笑着哭):
你将父窗体通过构造方法参数或者公共方法传递进子窗体就可以了

需要在子窗体中访问的父窗体中的控件需要修改成public的,因为一般拖到窗体上的控件都是缺省private的

JasonHeung 2005-02-18
  • 打赏
  • 举报
回复
你将父窗体通过构造方法参数或者公共方法传递进子窗体就可以了。

pubic class Form2
{
public Form2(Form1 form)
{
myform = form;
}
Form1 myform;

public void SetForm(Form1 form)
{
myform = form;
}

}
jackie615 2005-02-18
  • 打赏
  • 举报
回复
把form对象定义成全局的就是了.
kenMoxi 2005-02-18
  • 打赏
  • 举报
回复
这样子就可以访问到父窗体上控件的值!
kenMoxi 2005-02-18
  • 打赏
  • 举报
回复
把父窗体作为参数传到子窗体,然后父窗体的控件设置为public
mbh0210 2005-02-18
  • 打赏
  • 举报
回复
把父窗体的控件属性设置为public试试。
douxulai 2005-02-18
  • 打赏
  • 举报
回复
另外,以上所说的都不是MDI窗体
就是普通的System.Windows.Forms.Form
marvelstack 2005-02-18
  • 打赏
  • 举报
回复
在子窗体中保存父窗体的引用,
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
http://blog.csdn.net/zhzuo/archive/2004/04/05/22028.aspx
http://blog.csdn.net/zhzuo/archive/2004/04/05/22029.aspx
hyl6688 2005-02-18
  • 打赏
  • 举报
回复
例:在Form2的构造中这样写
public Form2(Form frm)
{
//要先声明basefrm
basefrm = frm;
}
在Base窗体中
Form2 frm2 = new Form2(this);
最后检查主窗中的控件是不是public的
Z8SOFT 2005-02-18
  • 打赏
  • 举报
回复
正在学!
amendajing 2005-02-18
  • 打赏
  • 举报
回复
有难度,mark
readersm68 2005-02-18
  • 打赏
  • 举报
回复
学习
Matthewzhong 2005-02-18
  • 打赏
  • 举报
回复
1、将你要访问的父窗体中的对象设为Public
2、将父窗体负值到子窗体的Owner里
3、在子窗体中使用Owner生成父窗体对象
4、用生成的对象就能调用父窗体中的Public对象了

例:
父窗体:
private void abc()
{
Form2 frm = new Form2();
frm.Owner = this;
frm.Show();
}

子窗体:
private void abc()
{
Form1 frm = ( Form2 )this.Owner;
//假设父窗体中有Public textBox1
frm.textBox1.Text = "Hello";
}
douxulai 2005-02-18
  • 打赏
  • 举报
回复
wuyueyoumu(五月游牧)说的有道理!仅仅改为public不太好。

我现在用JasonHeung(拥有一切也只不过这样笑着哭) 的方法,但没有传窗体,只是传Form1中控件的值。效果还不错。
wuyueyoumu 2005-02-18
  • 打赏
  • 举报
回复
建议最好不要直接修改控件的访问修饰符,对于字段来说最好使用私有的,要公布字段的话,通过属性的方式去公布。也就是说添加一个访问父窗体控件的属性就可以了。对于你说的应用来说,只实现属性的get方法即可,这样,可以避免父窗体的控件被修改。

110,574

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧