winform ShowDialog为什么会触发FormClosing
winform ShowDialog为何会触发FormClosing
好奇怪啊~总是这样,我在登录成功后跳转到主页面的时候,总是会闪退,调试发现调用这个ShowDialog之后,就会触发主页面的FormClosing,实在想不通,来求助各位大神,有没有人遇到这情况的。先道谢了!!!
------解决方案--------------------
C# Winform 拦截关闭按钮触发的事件
试试
------解决方案--------------------
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
------解决方案--------------------
你想登陆后关闭登陆窗体,然后打开主窗体
但是你的登陆窗体才是主窗体,你所谓的主窗体不过是个功能窗体
你应该执行hide()方法,而不是close掉
------解决方案--------------------
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close
------解决方案--------------------
分两个问题:
登陆窗体关闭问题:你一旦给模态窗体的DialogResult赋值,它就会给自己发一个消息,以便在空闲时关闭自己,估计是你有这种赋值操作
解决主页面关闭问题:Application.Run之前把登陆窗体Show出来,登陆窗体关闭后用Application.Run来Show你的主界面
------解决方案--------------------
不要用showdialog,改用show试试
如果还闪退,说明代码里有异常,比如在64位下调用了32位的DLL并且没有加try...catch导致程序崩溃
------解决方案--------------------
不要用登录窗口做主窗口。
在主窗口打开之后,检查没有登录,就弹出登录,然后登录之后,关闭登录窗口……
------解决方案--------------------
记录一下程序执行的日志吧,看看能不能确定是从哪一个方法、哪一行代码而崩溃的。
其它乱七八糟的什么瞎猜的“解决方法”,越折腾越乱。
好奇怪啊~总是这样,我在登录成功后跳转到主页面的时候,总是会闪退,调试发现调用这个ShowDialog之后,就会触发主页面的FormClosing,实在想不通,来求助各位大神,有没有人遇到这情况的。先道谢了!!!
------解决方案--------------------
C# Winform 拦截关闭按钮触发的事件
试试
------解决方案--------------------
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
------解决方案--------------------
你想登陆后关闭登陆窗体,然后打开主窗体
但是你的登陆窗体才是主窗体,你所谓的主窗体不过是个功能窗体
你应该执行hide()方法,而不是close掉
------解决方案--------------------
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close
------解决方案--------------------
最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。 是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close
分两个问题:
登陆窗体关闭问题:你一旦给模态窗体的DialogResult赋值,它就会给自己发一个消息,以便在空闲时关闭自己,估计是你有这种赋值操作
解决主页面关闭问题:Application.Run之前把登陆窗体Show出来,登陆窗体关闭后用Application.Run来Show你的主界面
------解决方案--------------------
最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。 是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close
不要用showdialog,改用show试试
如果还闪退,说明代码里有异常,比如在64位下调用了32位的DLL并且没有加try...catch导致程序崩溃
------解决方案--------------------
不要用登录窗口做主窗口。
在主窗口打开之后,检查没有登录,就弹出登录,然后登录之后,关闭登录窗口……
------解决方案--------------------
记录一下程序执行的日志吧,看看能不能确定是从哪一个方法、哪一行代码而崩溃的。
其它乱七八糟的什么瞎猜的“解决方法”,越折腾越乱。