15

我正在使用 VB 2010 Express。

C#我将设置表单CancelButton属性。

对于这个 VB 表单,我没有 CancelButton,所以我怀疑我需要对KeyPress或进行编程KeyDown

  1. 这两个事件有什么区别?
  2. 我应该使用哪个?
  3. 我假设这个的一般代码如下?:

    If e.KeyCode = Keys.Escape Then
        Close()
    End If
    

.Focus在表单的其他控件中有某些代码,然后将其放在主表单事件过程中变得毫无意义,因为主表单从未真正拥有焦点。

4

4 回答 4

36

将表单 keydown 设置为

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If e.KeyCode = Keys.Escape Then Me.Close()
End Sub

然后,请记住将表单上的 KeyPreview 属性设置为 TRUE。

于 2012-11-22T09:20:36.977 回答
2

我的解决方案也是表单属性:

  • 将 CancelButton 属性设置为执行取消功能的按钮
于 2016-04-01T07:32:06.327 回答
1
  1. 你说“VB 表单没有取消按钮”——所以给它一个不可见的按钮。 a.) 将按钮添加到表单中。b.) 将其Visible属性设置为False。(请记住,计算机不会犯错误——它们会撒谎。所以让我们算一算吧。)
  2. 在表单属性菜单上,将CancelButton属性设置为不可见的取消按钮
  3. 在表单属性菜单上,将KeyPreview属性设置为True
  4. 双击你不可见的 CancelButton 并添加 Me.Dispose()
  5. 现在你要处理一个令人讨厌的问题。结构化编程的基本原则之一是“例程必须只有一个出口”。您不想在两个不同的地方处理退出例程。您的用户可以通过使用右上角的“Esc”退出。结构化编程真是太棒了。所以 。. .
  6. 红色按钮右上角的黑色“X”调用 FormName_Deactivate——如果您的表单名称是 FormSanta,那么它就是 FormSanta_Deactivate。为简单起见,不要介意正确的方法,(你的天鹅绒血汗工厂里的微型农奴,你能听到我在哭吗?)给你右上角的“X”按钮和你不可见的退出按钮相同的代码。然后添加 Me.Close()
于 2015-06-14T18:37:20.110 回答
0

表单的“KeyPreview”属性必须设置为true,否则这将不起作用...

于 2015-05-08T23:26:43.353 回答