网上看了下,还是半懂不懂。
在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());
}
}
在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());
}
}
Form f1 = new Form();必然出错!!!
Form1 f1 = (Form1)this.Owner;
则可以用form1中的全部资源。
********************************
仅父窗体中的公共实例成员可以访问而在form2中写
Form f1 = new Form();
则只能用部分资源。
***********************************
这个只是新实例化一个窗体,与Form1无关
无语看错了,以为是Form1 f1 = new Form();老了,眼花
Form f1 = new Form(); 能访问Form对象的公开成员
这里为什么要(Form1)this.Owner
本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。
这个可以理解为窗体间的传值问题,From2中:Form1 f1 = (Form1)this.Owner
从这句可以看出Form2的拥有者为Form1,这句获取到的是Form1窗体的一个实例,但这个实例是只能访问Form1里面的公共实例成员的,私有实例/静态成员无法访问,访问Form1的公共静态成员是通过类直接访问的,即Form1.公共静态成员。这种窗体间的传值我觉得用得还是比较多的,一般有两种,一种是实例化Form2的时候就设置其Owner属性为Form1,一种是实例化Form2后,调用Show(this)或ShowDialog(this)将Form1的实例传过去…
这里为什么要(Form1)this.Owner
本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。
this.Owner的类型为Form类型!需要强制转换…