我在程序中使用ShowDialog(); 在主窗体打开某个窗体,但是打开后还可以回到主窗体操作,完全是Show()的效果。之后我在主窗体上随便放了一个按钮,打开同一个子窗体,也使用ShowDialog()。可是就有效果。请问在是为什么,有哪位大侠见过这样的问题,if (registerkind.Equals("bankkind"))
                                {
                                    BankRegister luruwin = new BankRegister(temptag1);
                                    luruwin.ShowDialog();
                                   
                                }
                                else{}在线等啊。

解决方案 »

  1.   

    BankRegister是FORM窗体对象吗?UserInfoForm uiff = new UserInfoForm(ul, "updateInfo");
                    uiff.ShowDialog();没问题啊!
      

  2.   

    这是ShowDialog和show的区别之处,ShowDialog相比show多了一个类似缓冲的效果
      

  3.   

    没见过,这完全是ShowDialog和show的区别,不可能是代码问题吧,重新生成或重写看看。
      

  4.   

    对呀,是在主线程中执行的showdialog吗?
      

  5.   

    showdialog会阻塞父窗体,或调用自己的窗体的消息循环,你如果线程调用的,那自然不会阻塞主线程的窗体了。主线程(ui线程)->创建窗体->进入消息循环->调用新窗体->新窗体.ShowDialog->执行新模态窗口阻塞父窗体辅助线程->运行到某个时候->创建窗体.ShowDialog->没有父窗体可以阻塞,父窗体是NULL,这里和主窗体没任何联系,当然和Show效果看上去一样了。但是不同的是你不用调用Application.Run(新窗体());
      

  6.   

    干嘛这样做,辅助线程要实现主线程的某些操作可以用事件啊,调用触发,然后主界面线程注册响应事件。delegate void sometime_event_handler();
    public event sometime_event_handler sometime_event;ThreadProc()
    {
       //sometime
       if(sometime_event != null) sometime();
    }
    //ui
    sometime_event += ThisRunWhenSometime;public void ThisRunWhenSometime()
    {
        EventHandler eh = delegate()
        {
            FormA f = new FormA();
            f.ShowDialog();
        };
        this.invoke(eh);
    }
      

  7.   

    万恶的csdn,我好不容易敲的空格。还我。
      

  8.   

    if (registerkind.Equals("bankkind"))
                                    {
                                        BankRegister luruwin = new BankRegister(temptag1);
                                        luruwin.ShowDialog(this);
                                       
                                    }
                                    else{}
    这样就不可以操作下面的窗口了!
      

  9.   

    ShowDialog显示的窗体是模式的窗体, 
    Show方法显示的窗体是非模式的. 模式窗体只有关闭了以后才能操作其它的应用程序的窗体,
    而非模式的窗体可以和任何一个其它的同一应用程序中的窗体进行切换.