网上看了下,还是半懂不懂。
在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());        
        }
    }

解决方案 »

  1.   

    而在form2中写
    Form f1 = new Form();必然出错!!!
      

  2.   

    在form2中写
    Form1 f1 = (Form1)this.Owner;
    则可以用form1中的全部资源。
    ********************************
    仅父窗体中的公共实例成员可以访问而在form2中写
    Form f1 = new Form();
    则只能用部分资源。
    ***********************************
    这个只是新实例化一个窗体,与Form1无关
      

  3.   

    Form f1 = new Form();这个能不出错么,在form2中写Form1 f1 = (Form1)this.Owner则可以用form1中的全部资源。是因为父窗体中的公共实例成员可以访问
      

  4.   

    是否可这么理解,form1创建了form2。在form2要返回form1时,创建一个Form1把这个Form1关联或者说指向form1.然后操作的各个数值都是原form1的数值了。然后想问问,这个结构实际中常用吗。都在什么情况下用啊
      

  5.   


    无语看错了,以为是Form1 f1 = new Form();老了,眼花
      

  6.   

    Form1 f1 = (Form1)this.Owner; 能访问Form1对象的公开成员,当然包括它父类Form的公开成员
    Form f1 = new Form();  能访问Form对象的公开成员
      

  7.   


    这里为什么要(Form1)this.Owner
    本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。
      

  8.   

    是否可这么理解,form1创建了form2。在form2要返回form1时,创建一个Form1把这个Form1关联或者说指向form1.然后操作的各个数值都是原form1的数值了。然后想问问,这个结构实际中常用吗。都在什么情况下用啊
    这个可以理解为窗体间的传值问题,From2中:Form1 f1 = (Form1)this.Owner
    从这句可以看出Form2的拥有者为Form1,这句获取到的是Form1窗体的一个实例,但这个实例是只能访问Form1里面的公共实例成员的,私有实例/静态成员无法访问,访问Form1的公共静态成员是通过类直接访问的,即Form1.公共静态成员。这种窗体间的传值我觉得用得还是比较多的,一般有两种,一种是实例化Form2的时候就设置其Owner属性为Form1,一种是实例化Form2后,调用Show(this)或ShowDialog(this)将Form1的实例传过去…
      

  9.   


    这里为什么要(Form1)this.Owner
    本来创建form2的就是form1啊。也就是说this.Owner本来就是Form1型的。为什么还需要强制转换呢。
    this.Owner的类型为Form类型!需要强制转换…