KeyDown事件键不工作-VB.net

KeyDown事件键不工作-VB.net,vb.net,keydown,Vb.net,Keydown,KeyDown事件不起作用,按escape无法关闭窗体 Private Sub DataTable_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown If e.KeyCode = Keys.Escape Then Me.Close() End If End Sub 好吧,当然它是有效的,这项活动不太像火灾。击键会在具有焦点的控件上引发KeyDown事件。只有当窗体没有可以获得焦

KeyDown事件不起作用,按escape无法关闭窗体

Private Sub DataTable_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
    If e.KeyCode = Keys.Escape Then
        Me.Close()
    End If
End Sub

好吧,当然它是有效的,这项活动不太像火灾。击键会在具有焦点的控件上引发KeyDown事件。只有当窗体没有可以获得焦点的控件时,它才会成为窗体。一个相当不可能的情景

如果已经有一个标记为“取消”的按钮关闭表单,请设置表单的名称

如果你没有这样一个按钮,那么用户很难自己发现转义键是有用的。他很可能会使用右上角的关闭按钮。不过,您可以通过重写ProcessCmdKey()方法使其工作。像这样:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    If keyData = Keys.Escape Then
        Me.Close()
        Return True
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

他没有考虑到这一点,谢谢你的帮助,它起了作用。