MDI不能使用ShowDialog,而只能用Show,而Show()的时候主窗口继续执行,不会停止,问题在于 if (Form1.DialogResult == DialogResult.OK)在Show()之后立即执行,还没有得到DialogResult的值呢

解决方案 »

  1.   

    看来你的软件设计有问题.mdi窗体为啥要showdialog.
      

  2.   

    1L没有理解我的问题我当然没有用showdialog但是用show以后主窗口会继续执行下去例如
    /////主窗口
    Form1.show();
    if(Form1.DialogResult == DialogResult.OK)
    {MessageBox.Show("!"); }
    /////子窗口
    .....
    this.DialogResult =DialogResult .OK;
    this.Dispose();
    ======================================
    在子窗口还没出现的时候就已经弹框,这说明子窗口根本什么操作都没有做的时候主窗口就继续执行if了
      

  3.   

    1L没有理解我的问题我当然没有用showdialog但是用show以后主窗口会继续执行下去例如
    /////主窗口
    Form1.show();
    if(Form1.DialogResult == DialogResult.OK)
    {MessageBox.Show("!"); }
    /////子窗口
    .....
    this.DialogResult =DialogResult .OK;
    this.Dispose();
    ======================================
    在子窗口还没出现的时候就已经弹框,这说明子窗口根本什么操作都没有做的时候主窗口就继续执行if了
      

  4.   

    Form1.show()的时候,主窗口当然会继续执行下去了
    看看模式窗口和非模式窗口的定义就知道了
    非模式窗口要获得返回值,好像比较困难
      

  5.   

    In the form2, you could register the FormClosed event of form1, and then get the result in the event handler of form2.
      

  6.   

    非模态对话框,想实现等子窗体关闭后执行代码,可以用委托来实现,看看下面的例子C#利用事件完成两个窗体的传值
    http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html
      

  7.   

    我的MDI程序的子窗体怎么可以用showdialog?if(Form1.Showdialog() == DialogResult.OK)
    {MessageBox.Show("!"); } 
    你的不行?
    你把form1的MdiContian不设置看看呢?
      

  8.   

    你是否在主窗口设置了Form1.MdiParent = this呢?
      

  9.   


    不用委托也可以,再给你个例子看看这个帖子2楼的回答
    http://topic.csdn.net/u/20081128/21/1ca1b74a-4be0-4173-8b95-b99692b33041.html