关于 Form1 f1 = (Form1)this.Owner;

qiuhaod 2013-08-05 04:03:24
网上看了下,还是半懂不懂。
在form2中写
Form1 f1 = (Form1)this.Owner;
则可以用form1中的全部资源。

而在form2中写
Form f1 = new Form();
则只能用部分资源。

这样理解对吗。谁在能详细讲讲啊



部分代码:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = (Form1)this.Owner;
//Form f1 = new Form();
MessageBox.Show(f1.Form1Value.ToString());
}
}
...全文
430 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happySnow_zhe 2013-08-05
  • 打赏
  • 举报
回复
引用 7 楼 qiuhaod 的回复:
[quote=引用 6 楼 hwenycocodq520 的回复:] Form1 f1 = (Form1)this.Owner; 能访问Form1对象的公开成员,当然包括它父类Form的公开成员 Form f1 = new Form(); 能访问Form对象的公开成员
这里为什么要(Form1)this.Owner 本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。[/quote] this.Owner的类型为Form类型!需要强制转换…
happySnow_zhe 2013-08-05
  • 打赏
  • 举报
回复
引用 4 楼 qiuhaod 的回复:
[quote=引用 2 楼 happySnow_zhe 的回复:] 在form2中写 Form1 f1 = (Form1)this.Owner; 则可以用form1中的全部资源。 ******************************** 仅父窗体中的公共实例成员可以访问 而在form2中写 Form f1 = new Form(); 则只能用部分资源。 *********************************** 这个只是新实例化一个窗体,与Form1无关
是否可这么理解,form1创建了form2。在form2要返回form1时,创建一个Form1把这个Form1关联或者说指向form1.然后操作的各个数值都是原form1的数值了。 然后想问问,这个结构实际中常用吗。都在什么情况下用啊[/quote] 这个可以理解为窗体间的传值问题,From2中:Form1 f1 = (Form1)this.Owner 从这句可以看出Form2的拥有者为Form1,这句获取到的是Form1窗体的一个实例,但这个实例是只能访问Form1里面的公共实例成员的,私有实例/静态成员无法访问,访问Form1的公共静态成员是通过类直接访问的,即Form1.公共静态成员。这种窗体间的传值我觉得用得还是比较多的,一般有两种,一种是实例化Form2的时候就设置其Owner属性为Form1,一种是实例化Form2后,调用Show(this)或ShowDialog(this)将Form1的实例传过去…
qiuhaod 2013-08-05
  • 打赏
  • 举报
回复
引用 6 楼 hwenycocodq520 的回复:
Form1 f1 = (Form1)this.Owner; 能访问Form1对象的公开成员,当然包括它父类Form的公开成员 Form f1 = new Form(); 能访问Form对象的公开成员
这里为什么要(Form1)this.Owner 本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。
智商余额不足 2013-08-05
  • 打赏
  • 举报
回复
Form1 f1 = (Form1)this.Owner; 能访问Form1对象的公开成员,当然包括它父类Form的公开成员 Form f1 = new Form(); 能访问Form对象的公开成员
智商余额不足 2013-08-05
  • 打赏
  • 举报
回复
引用 1 楼 hwenycocodq520 的回复:
而在form2中写 Form f1 = new Form(); 必然出错!!!
无语看错了,以为是

Form1 f1 = new Form();
老了,眼花
qiuhaod 2013-08-05
  • 打赏
  • 举报
回复
引用 2 楼 happySnow_zhe 的回复:
在form2中写 Form1 f1 = (Form1)this.Owner; 则可以用form1中的全部资源。 ******************************** 仅父窗体中的公共实例成员可以访问 而在form2中写 Form f1 = new Form(); 则只能用部分资源。 *********************************** 这个只是新实例化一个窗体,与Form1无关
是否可这么理解,form1创建了form2。在form2要返回form1时,创建一个Form1把这个Form1关联或者说指向form1.然后操作的各个数值都是原form1的数值了。 然后想问问,这个结构实际中常用吗。都在什么情况下用啊
FTD_2009 2013-08-05
  • 打赏
  • 举报
回复
Form f1 = new Form();这个能不出错么,在form2中写Form1 f1 = (Form1)this.Owner则可以用form1中的全部资源。是因为父窗体中的公共实例成员可以访问
happySnow_zhe 2013-08-05
  • 打赏
  • 举报
回复
在form2中写 Form1 f1 = (Form1)this.Owner; 则可以用form1中的全部资源。 ******************************** 仅父窗体中的公共实例成员可以访问 而在form2中写 Form f1 = new Form(); 则只能用部分资源。 *********************************** 这个只是新实例化一个窗体,与Form1无关
智商余额不足 2013-08-05
  • 打赏
  • 举报
回复
而在form2中写 Form f1 = new Form(); 必然出错!!!

111,105

社区成员

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

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

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