假如我在不修改父窗体的前堤下,我要把另一个窗体设成该窗体的子窗体,要如何设?      public void Goods(Form owner, GlobalService globalService, string systemCode, string functionCode)
            {
                Goods f = new ToGoods();
                f.GlobalService = globalService;
                f.SystemCode = systemCode;
                f.FuncCode = functionCode;
                f.MdiParent = owner;
                f.Show();
            }
            //Form owner 参数就是设置Goods父窗体的参数,
             我现在在Goods 中打开一个新的体New,我要把这个新的窗体New的父窗体也设成和Goods 的父窗体一样(传递Form owner参数给New),要怎么写代码呢?
       

解决方案 »

  1.   

    Goods f = new Goods();
    f.Owner = owner;
    f.show();
      

  2.   

    LZ的这个小问题问的似乎很高深啊!要回答这个问题,首先要确定参数Form owner是不是MDI容器。如果是MDI容器,LZ自己的代码是正解。
    如果不是MDI容器,此问题无解。(或许经过一系列复杂的API调用可以实现)注:
    父窗体(Parent)与所有者(Owner)是不同概念。
    Child包含在Parent内部,移动时不能超出Parent。
    Owned显示保持在Owner前面,移动时可以超出Parent。
      

  3.   

    4楼的兄弟,是这样的:在Parent中已经有设置,我现在就是要不再设置Parent//窗体owner的属性
    在子窗体打开之前,会调用此函数
     public   void   Goods(Form   owner,   GlobalService   globalService,   string   systemCode,   string   functionCode) 
                            { 
                                    Goods   f   =   new   ToGoods(); 
                                    f.GlobalService   =   globalService; 
                                    f.SystemCode   =   systemCode; 
                                    f.FuncCode   =   functionCode; 
                                    f.MdiParent   =   owner; 
                                    f.Show(); 
                            } 
    //f.MdiParent   =   owner; 句就已经设置 Goods的父窗体是owner了.
    我现在在Goods中再打开一个新的窗体New,我要把New也设置成父窗体为owner
      

  4.   

    你的主窗体是MDI容器吧,如果是这样,把New窗体的MdiParent属性设置为主窗体就可以了。
      

  5.   

    假设你的程序中定义了3个Form——Form1、Form2、Form3,其中Form1是主窗体,并设置了IsMdiContainer属性。
    public partial class Form1
    {
        public Form2 form2;
        private void Form1_Load(object sender, EventArgs e)
        {
            form2 = new Form2();
            form2.MdiParent = this;
            form2.Show();
        }
    };
    public partial class Form2
    {
        private void Form2_Load(object sender, EventArgs e)
        {
            Form3 form3 = new Form3();
            form3.MdiParent = this.MdiParent;
            form3.Show();
        }
    };
    public partial class Form3
    {
    };
      

  6.   

    谢谢楼上的各位兄弟:我现在是要这样:
    public partial class Form1
    {
        public Form2 form2;
        private void Form1_Load(object sender, EventArgs e)
        {
            form2 = new Form2();
            form2.MdiParent = this;
            form2.Show();
        }
    };public partial class Form3
    {
    };
    假如我Form3的父窗体也要设成Form1.
    我在Form1中
    public partial class Form2
    {
        private void Form2_Load(object sender, EventArgs e)
        {
            Form3 form3 = new Form3();
            form3.MdiParent = this.MdiParent;
            form3.Show();
        }
    }
    上面这一段不要.(From1是DLL文件)
    我要通过传递From2的参数,把代码写在From2中或From3中.
      

  7.   

    不理解LZ的意思,总之只要让新窗体的MdiParent属性是主窗体就OK。
    假设有Form1、Form2两个窗体,Form1是MDI容器,Form2是Form1的子窗体。在Form2的某个方法中要再创建一个Form3,让Form3也作为Form1的子窗体,就用form3.MdiParent = this.MdiParent; 假设创建Form3的代码不是Form2的方法,就需要把Form2的对象或者Form2的MdiParent属性作为参数传递过去。
      

  8.   

    用了你14楼的代码,
    form3.MdiParent   =   this.MdiParent这句不能用,没这个属性。