![]() |
1
12
如果您希望在最后一个案例中优雅地处理异常,那么
好啊
(不过不太好)-只要你的申请是例外情况。否则,我将创建一个新方法,将窗体显示为一个带有布尔值的对话框。如果布尔值返回false(aka,用户关闭表单),那么我将处理从那里关闭的应用程序(使用
在我看来,关闭孩子的申请而不是告诉家长是非常糟糕的做法。我唯一一次同意这一点是在
此方法停止所有线程上所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不会强制应用程序退出。exit方法通常从消息循环中调用,并强制run返回。要仅退出当前线程的消息循环,请调用exit thread。 见上文。 终止此进程并为基础操作系统提供指定的退出代码。 kill强制终止进程,而closeMainWindow只请求终止。当具有图形界面的进程正在执行时,其消息循环处于等待状态。每次操作系统向进程发送Windows消息时,都会执行消息循环。
在注释中澄清之后(将流返回给父级并从父级处理),这是迄今为止最好的方法。
向调用进程引发异常。如果这是主线程,它将以非常难看的方式抛出异常。 |
![]() |
2
4
所有这些终止应用程序的方法都太复杂了,它们在不同的场景中很有用,但在您的场景中却没有。 您可以稍微重新设计应用程序,以更优雅的方式解决您的问题。在主方法中,您可以显示登录表单,如果用户单击“取消”按钮,那么您只需退出主方法。否则,将显示主窗体:
这种行为更加清晰和简单。而且在大多数情况下,主窗体太杂,所以用户应该等待更多的时间从应用程序中看到第一个窗口。 |
![]() |
3
2
你应该使用
|
![]() |
4
1
感谢OP提供的解决方案,只想添加到其中。 关闭子窗体并将除“取消”以外的内容返回给父窗体:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 7 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 7 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 7 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 8 月前 |