2013-02-19 86 views
1

我有一個表格,我在我的代碼中多次使用End關閉。我想做一個命令來保存設置,當我這樣做時,這叫做VarsToIni(),它接受一些公共變量並將它們保存在一個INI文件中。我已經嘗試將它放在主窗口的FormClosing(它始終保持打開狀態),並且只有當您按下X按鈕而不是從我的End語句關閉時才起作用。檢測關閉表單的所有方法的最佳方法是什麼?

+1

檢測關閉窗體的所有方法的最佳方法是不調用End。只需關閉主窗體。另外,INI文件是傳統技術,如有可能,請嘗試使用「我的項目」選項卡中的設置。 – LarsTech 2013-02-19 17:34:25

+1

顯而易見的答案是不要用'End'關閉表單。這就是'Form.Close'方法的用途。 – JosephHirn 2013-02-19 17:45:15

+0

@LarsTech我不喜歡My.Settings的東西,所以決定切換回INI。它使其他應用程序(如安裝程序)更易於閱讀。 – RX14 2013-02-19 17:48:53

回答

2

添加一個新的子並更換電話到End致電您的新子:

Sub EndMe() 
    VarsToIni() 
    Application.Exit() 
End Sub 

編輯:

正如丹指出,End()是一個糟糕的方式關閉應用程序,Application.Exit()是首選。

+0

我正在使用這種方法。 – RX14 2013-02-20 10:45:59

+0

然後你仍然在用'Shutdown mode:When startup form closing'調用'End' ... IMO'End' djv 2013-02-21 16:54:32

+0

@DanVerdolino我同意並修改。 – bendataclear 2013-02-21 17:15:55

0

我感到相當你的問題,仍然困惑:
這將關閉所有形式

For each x as Form in My.Application.OpenForms 
'You can then put your VarsToIni() here 
x.Close() 
Next 

注:添加到您的進口

Imports System.Windows.Forms 
+0

**「我試過把它放在主窗口的FormClosing中」**你怎麼看? (是的,但它沒有將'End'註冊爲'FormClosing'。)我使用不同形式的'End'是否重要?當我從另一個窗體執行'End'時,它會關閉窗體,我正在嘗試檢測窗體,但不會觸發'FormClosing'。 – RX14 2013-02-19 17:25:04

+0

這會工作,但我更喜歡@bendataclear的方法。 – RX14 2013-02-19 17:32:36

1

考慮使用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 
相關問題