winform ShowDialog为何会触发FormClosing

神说七哥 2014-07-14 11:08:52
好奇怪啊~总是这样,我在登录成功后跳转到主页面的时候,总是会闪退,调试发现调用这个ShowDialog之后,就会触发主页面的FormClosing,实在想不通,来求助各位大神,有没有人遇到这情况的。先道谢了!!!
...全文
260 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
记录一下程序执行的日志吧,看看能不能确定是从哪一个方法、哪一行代码而崩溃的。 其它乱七八糟的什么瞎猜的“解决方法”,越折腾越乱。
gwhzh 2014-07-16
  • 打赏
  • 举报
回复
不要用登录窗口做主窗口。 在主窗口打开之后,检查没有登录,就弹出登录,然后登录之后,关闭登录窗口……
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
引用 8 楼 u011607621 的回复:
[quote=引用 6 楼 Z65443344 的回复:] [quote=引用 4 楼 u011607621 的回复:] [quote=引用 2 楼 phommy 的回复:] 是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close[/quote]最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。[/quote] 不要用showdialog,改用show试试 如果还闪退,说明代码里有异常,比如在64位下调用了32位的DLL并且没有加try...catch导致程序崩溃[/quote]是的,仍然闪退,我也一直在找原因~
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 11 楼 hdt 的回复:
你的具体代码? 另外,可以用relfect 看看showdialog都执行了什么?
this._mainForm = new MainForm();
                this._mainForm.WindowState = FormWindowState.Maximized;
                this._mainForm.ShowDialog();
请问如何用relfect查看showdialog都执行了什么?
真相重于对错 2014-07-14
  • 打赏
  • 举报
回复
你的具体代码? 另外,可以用relfect 看看showdialog都执行了什么?
於黾 2014-07-14
  • 打赏
  • 举报
回复
引用 8 楼 u011607621 的回复:
引用 6 楼 Z65443344 的回复:
[quote=引用 4 楼 u011607621 的回复:] [quote=引用 2 楼 phommy 的回复:] 是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close[/quote]最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。[/quote] 不要用showdialog,改用show试试 如果还闪退,说明代码里有异常,比如在64位下调用了32位的DLL并且没有加try...catch导致程序崩溃
phommy 2014-07-14
  • 打赏
  • 举报
回复
引用 8 楼 u011607621 的回复:
引用 6 楼 Z65443344 的回复:
[quote=引用 4 楼 u011607621 的回复:] [quote=引用 2 楼 phommy 的回复:] 是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close[/quote]最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。[/quote] 分两个问题: 登陆窗体关闭问题:你一旦给模态窗体的DialogResult赋值,它就会给自己发一个消息,以便在空闲时关闭自己,估计是你有这种赋值操作 解决主页面关闭问题:Application.Run之前把登陆窗体Show出来,登陆窗体关闭后用Application.Run来Show你的主界面
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
引用 4 楼 u011607621 的回复:
[quote=引用 2 楼 phommy 的回复:] 是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close[/quote]最难以捉摸的是,我有时候能够打开功能窗体,有时候又会闪退,所以我想会不会不是代码的问题,比如我今天刚调试的时候都不会闪退,之后调试就闪退了,而且我保证没有修改代码的。
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
你想登陆后关闭登陆窗体,然后打开主窗体 但是你的登陆窗体才是主窗体,你所谓的主窗体不过是个功能窗体 你应该执行hide()方法,而不是close掉
我登录后,登录窗体是没有关闭的。
於黾 2014-07-14
  • 打赏
  • 举报
回复
引用 4 楼 u011607621 的回复:
引用 2 楼 phommy 的回复:
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
保证写了,但是不一定写在登陆窗体中,有可能主窗体显示后调用的Loginform.close
於黾 2014-07-14
  • 打赏
  • 举报
回复
你想登陆后关闭登陆窗体,然后打开主窗体 但是你的登陆窗体才是主窗体,你所谓的主窗体不过是个功能窗体 你应该执行hide()方法,而不是close掉
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 2 楼 phommy 的回复:
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
是的,我登录窗体确实是所以窗体的父窗体,可是我并没有任何代码指示要关闭登录窗体呀~
神说七哥 2014-07-14
  • 打赏
  • 举报
回复
引用 1 楼 wangnaisheng 的回复:
C# Winform 拦截关闭按钮触发的事件 试试
好的,谢谢
phommy 2014-07-14
  • 打赏
  • 举报
回复
是不是你Application.Run里传递的是登陆窗体?这样的话登陆窗体一关就会整个进程关掉
wangnaisheng 2014-07-14
  • 打赏
  • 举报
回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧