2015-12-11 251 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我已经更新了我的答案,以演示如何做到这一点 –