子窗口如何调用父窗口的函数和成员?

upc_linshi 2010-11-12 10:00:48
form1是父窗口,通过
Form2 f2 = new Form2();
f2.ShowDialog();
产生form2,
如何在form2的窗口处理函数中使用form1的资源呢?我用的是vs2005,c#的方案
...全文
862 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
upc_linshi 2010-11-16
  • 打赏
  • 举报
回复
我总结一下吧
如果要在两个不同的类之间调用,那么首先得在类的成员函数中获得目标类的对象,在自动建立的程序框架里是没有Form1的对象的,它的对象隐匿了(application.run(new Form1()))
因此要在Form2中获得Form1的对象,有两种方法
1,在解决方案的类中,最大的那个类中声明Form1的对象,Form1 form1,在运行时,form1=new Form1()
application.run(form1);
2,在运行其他的窗体的时候,比如运行Form2,给From2添加一个变量Form1 f1;把Form2的构造函数改为
Form2(Form1 f1)
{this.f1=f1};
在Form1中生成Form2的时候,Form2=new Form2(this);这样就把Form1的对象this传给了Form2,Form2就可以获得Form1的对象了
upc_linshi 2010-11-13
  • 打赏
  • 举报
回复
能不能给出parent的一些方法啊?我就是函数名称不知道怎么查?给个链接参考一下,谢谢
upc_linshi 2010-11-13
  • 打赏
  • 举报
回复
3楼说的对吗?
f2.Form_1 = this;
这里的this不是form2吗
Ann725 2010-11-13
  • 打赏
  • 举报
回复
这两个窗体是两个不同的类,这就涉及数据传递的问题,可以用委托
quifar123 2010-11-12
  • 打赏
  • 举报
回复
在form1 定义要用的字段如:string a;在form2定义public b的字段接受,
在form1的事件中:form2 f=new form2();
f.b=a;
f.show();//or f.ShowDialog();
兔子-顾问 2010-11-12
  • 打赏
  • 举报
回复
看你如何设置的子窗体和父窗体了。如果是this.Controls.Add添加的,你可以通过Parent转换为父窗体类型:
(Parent as Form1).访问父窗体对象
如果是彼此不想干的,设置了Owner,则可以靠这个变量转换类型访问。
如果是Mdi。可以用MdiParent访问。
hch126163 2010-11-12
  • 打赏
  • 举报
回复
form2 中

public form1 Form_1;

Form2 f2 = new Form2();
f2.Form_1 = this;
f2.ShowDialog();

这样就可以在form2 中访问 form1 的公共属性和方法
int64 2010-11-12
  • 打赏
  • 举报
回复
简单的可以用全局变量实现
laj0600310219 2010-11-12
  • 打赏
  • 举报
回复
蛮多方法的啊,你可以使用传参的形式,也可以使用public变量的形式,还可以使用委托的形式。。。等等。。

110,529

社区成员

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

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

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