现有窗体Login及窗体 MainForm,Program中直接打开Login。
想把Login隐藏,显示MainForm。
this.Hide();
MainForm fff = new MainForm("admin", "0", strA);
this.Owner = fff;
fff.ShowDialog();
在一般情况下运行正常,但是有时候(概率大约10%)会报错。窗体试图将不符合要求的窗体设置为它的所有者,窗体不能拥有自身或其所有者
一般是fff.Owner = this 这样吧?
你吧当前窗口的父窗体设置成新new出来的窗体这个是什么意思啊?从来没这么试过。
当前窗体不可以设置新建窗体为父窗体
只能是新建窗体设置当前窗体为父窗体
这就跟你生了个孩子,再认孩子当干爹一样,是很无厘头的行为
如果不用ShowDialog,改用Show,可能还能成功(没试验过,但是起码逻辑上看起来问题还不大)
而使用模态窗体,代码会阻塞在这一句,等模态窗体关闭后才会继续执行
而设置了Owner后,父窗体关闭,子窗体也会跟着关闭
如此一来,你当前窗体设置新窗体为父窗体,然后以模式对话框的形式弹出,等新窗体关闭的时候,当前窗体也就跟着关闭,然后程序退出了,这语法即使能通过,也绝对是个BUG设计