2015-12-11 277 views
0

我想從我的窗體中刪除/禁用/隱藏x按鈕,但沒有禁用完全關閉。所以我需要它,所以程序不能通過使用x按鈕來關閉,而只能通過某個鍵盤命令(通過菜單項或類似命令)來關閉。我知道的唯一方法是完全禁用關閉,這意味着x按鈕不起作用,但我無法使用鍵盤命令關閉它。VB.NET禁用/隱藏x按鈕,但沒有禁用完全關閉

是否有任何方法禁用只是x按鈕?

謝謝。

+0

這是一個WinForm應用程序嗎? –

+0

@StevenDoggart是的這是一個Windows窗體應用程序。 –

+0

很難理解爲什麼「鍵盤命令」不起作用,只需使用ProcessCmdKey()覆蓋檢測它並調用Me.Close()即可。 –

回答

0

在窗體的屬性中,將ControlBox屬性設置爲False。然後,在代碼中,當您要關閉表單時,只需調用表單的Close方法即可。

然而,這樣做,也不會從通過標準OS方法關閉窗口停止用戶(例如,經由任務欄上的按鈕,通過ALT + F4)。爲了阻止這種情況,您需要取消在其FormClosing事件中關閉窗體。例如:

Public Class Form1 
    Private _closeAllowed As Boolean = False 

    Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click 
     _closeAllowed = True 
     Close() 
    End Sub 

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing 
     If Not _closeAllowed Then 
      e.Cancel = True 
     End If 
    End Sub 
End Class 

但是,即使這樣也不會終止應用程序。要獲得更全面的解決方案,您可能需要針對開發Windows自助服務終端應用程序的最佳實踐進行一些搜索。

+0

謝謝。我會嘗試,並讓你知道它是否適用於我。 –

+0

有沒有辦法阻止除了使用鍵盤命令之外的所有應用程序關閉?例如。禁用右鍵單擊並使用關閉窗口,禁用Alt + F4等),但仍然讓關鍵命令關閉它? –

+0

@JackPollock我已經更新了我的答案,以演示如何做到這一點 –