我在程序里面调用的是sys.dll文件,我在MDI窗体按钮里面有这些行代码:
sys.SForm MSForm=new SForm()
MSForm.show();
现在的问题是我点了一下这个按钮,运行一个实例,可我再运行一下时又运行一个实例,如果用变量控制,可我这个是调用的dll文件,当MSForm关闭时又不知道如何回传一个参数给主MDI窗体了,我是想这个窗体只运行一次。请问该怎么解决。
另外我的子窗体如果是最大化时,子窗体的标题就靠到主窗体的标题栏上了,并且子窗体的图标也到主窗体的标题栏上了,这个怎么办啊

解决方案 »

  1.   

    sys.SForm MSForm=new SForm()
    MSForm.show();
    ------------------------
    你每次调用都声明新对象,当然会出现另一个,你只声明一次就好了。比如你在sys.dll中这样:
    public static SForm MSForm;在构造函数中MSForm=new SForm();在MDI窗体按钮里面有这些行代码:sys.MSForm.show();
      

  2.   

    添加一个变量:在主窗体中:
    private  SForm MSForm = null;在按钮click里面:
    if (MSForm == null) then 
    {
       MSForm=new SForm();
    }
    MSForm.show();
    在MSForm的Close事件里面:
    this.MdiParent.MSForm  = null;或者你在Closing事件里面,不让用户Close这个窗体,只是Hide掉它:
    e.Cancel = true;
    this.Hide();
      

  3.   

    sys.SForm MSForm=new SForm()这句声明别放在按钮事件里.MSForm应该有关闭事件.
      

  4.   

    将MSForm定义成类的private的实例变量,
    然后
    if(MSForm == null)
    {
        sys.SForm MSForm=new SForm();
    }
    MSForm.show();
      

  5.   

    See it
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c4c.aspx#q521q
      

  6.   

    第二次你加上如下一句:
    frmChild.BringToFront();
      

  7.   

    我也写了个demo,没发现问题啊