检测关闭表单的所有方法的最佳方法是什么?
我有一个表格,我在我的代码中多次使用End
关闭。我想做一个命令来保存设置,当我这样做时,这叫做VarsToIni()
,它接受一些公共变量并将它们保存在一个INI文件中。我已经尝试将它放在主窗口的FormClosing(它始终保持打开状态),并且只有当您按下X按钮而不是从我的End
语句关闭时才起作用。检测关闭表单的所有方法的最佳方法是什么?
添加一个新的子并更换电话到End
致电您的新子:
Sub EndMe()
VarsToIni()
Application.Exit()
End Sub
编辑:
正如丹指出,End()
是一个糟糕的方式关闭应用程序,Application.Exit()
是首选。
我正在使用这种方法。 – RX14 2013-02-20 10:45:59
然后你仍然在用'Shutdown mode:When startup form closing'调用'End' ... IMO'End'
@DanVerdolino我同意并修改。 – bendataclear 2013-02-21 17:15:55
我感到相当你的问题,仍然困惑:
这将关闭所有形式
For each x as Form in My.Application.OpenForms
'You can then put your VarsToIni() here
x.Close()
Next
注:添加到您的进口
Imports System.Windows.Forms
考虑使用Application.Exit()
而不是End
。这允许调用FormClosing
而不管它是什么(你可以根据它如何关闭来处理它)。
Private Sub frmMain_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Select Case e.CloseReason
Case CloseReason.ApplicationExitCall
' This is the result of Application.Exit()
e.Cancel = False
Case CloseReason.UserClosing
' This is the result of clicking the red X
Select Case MessageBox.Show("Are you sure you wish to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Case DialogResult.Yes
e.Cancel = False
Case DialogResult.No
e.Cancel = True
End Select
Case Else
e.Cancel = False
End Select
If Not e.Cancel Then
VarsToIni()
End If
End Sub
检测关闭窗体的所有方法的最佳方法是不调用End。只需关闭主窗体。另外,INI文件是传统技术,如有可能,请尝试使用“我的项目”选项卡中的设置。 – LarsTech 2013-02-19 17:34:25
显而易见的答案是不要用'End'关闭表单。这就是'Form.Close'方法的用途。 – JosephHirn 2013-02-19 17:45:15
@LarsTech我不喜欢My.Settings的东西,所以决定切换回INI。它使其他应用程序(如安装程序)更易于阅读。 – RX14 2013-02-19 17:48:53