2010-07-14 35 views
2

如何讓我的窗體不會關閉,而是在用戶單擊窗體上的「X」按鈕時隱藏?如何在窗體中單擊「X」,將不會關閉但隱藏它

因爲我有一個NotifyIcon,其中包含一個退出菜單,它實際上執行窗體關閉(我不希望窗體的「X」關閉窗體,但隱藏它)。

謝謝。

+0

接近重新分配的形式,而隱藏使其不可見,並保持狀態 – Jeremy 2010-07-14 18:35:52

+0

是,上一個註釋去掉。我正在考慮DialogResult。 – 2010-07-14 18:38:30

回答

4

只需實施FormClosing事件。取消關閉並隱藏表單,除非它是由通知圖標的上下文菜單觸發的。例如:

Private CloseAllowed As Boolean 

    Protected Overrides Sub OnFormClosing(ByVal e As System.Windows.Forms.FormClosingEventArgs) 
     If Not CloseAllowed And e.CloseReason = CloseReason.UserClosing Then 
      Me.Hide() 
      e.Cancel = True 
     End If 
     MyBase.OnFormClosing(e) 
    End Sub 

    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click 
     CloseAllowed = True 
     Me.Close() 
    End Sub 
+0

非常感謝這個作品! – jameslcs 2010-07-14 18:42:13

+0

如果您只是從tooltrip項中調用Application.Exit(),則不需要CloseAllowed。 – Giorgi 2010-07-14 20:15:53

+0

可以工作,一定要測試e.CloseReason – 2010-07-14 20:21:17

3

您需要處理Form.Closing事件並將e.Cancel設置爲true以停止表單關閉。要隱藏它,請撥打Hide方法。

+0

好的,我已經設置e.Cancel = True,但是如果我想真正關閉表單,那麼該怎麼做?像使用菜單Exit來關閉表單。 – jameslcs 2010-07-14 18:37:46

+0

@jameslcs - 只需從tooltrip項目單擊處理程序中調用Application.Exit(),然後在FormClosing事件處理程序中檢查e.CloseReason。 – Giorgi 2010-07-14 20:23:06

1
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
     e.Cancel = True 
     Me.Hide() 

End Sub 
相關問題