按下 Escape 键时关闭 VB.NET 表单
Posted
技术标签:
【中文标题】按下 Escape 键时关闭 VB.NET 表单【英文标题】:Closing a VB.NET form when Escape key is pressed 【发布时间】:2012-11-22 09:06:45 【问题描述】:我正在使用 VB 2010 Express。
在C#
中,我将设置表单CancelButton
属性。
对于这个 VB 表单,我没有 CancelButton,所以我怀疑我需要编程 KeyPress
或 KeyDown
。
-
这两个事件有什么区别?
我应该使用哪个?
我假设一般代码如下?:
If e.KeyCode = Keys.Escape Then
Close()
End If
我在表单的其他控件中有某些.Focus
代码,然后将其放在主表单事件过程中变得毫无意义,因为主表单从未真正拥有焦点。
【问题讨论】:
添加以下代码,记得将表单上的KeyPreview属性设置为TRUE。Form
has a CancelButton
property 无论您使用什么语言 - 我不确定“对于这个 VB 表单我没有 CancelButton”是什么意思
@AakashM ...谢谢 - 它一直都在那里!! (教我早上730发帖)
@AakashM 我仍然对KeyPress
和KeyDown
之间的区别感到好奇?
来自MSDN "KeyPress 事件不是由非字符键引发的;但是,非字符键会引发 KeyDown 和 KeyUp 事件。"因此,例如 A
和 SHIFT
之间的不同行为
【参考方案1】:
将你的表单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。
【讨论】:
【参考方案2】:我的解决方案也是在表单属性中:
将 CancelButton 属性设置为执行取消功能的按钮【讨论】:
【参考方案3】:-
您说“VB 表单没有取消按钮”——所以给它一个不可见的按钮。
a.) 将按钮添加到表单中。
b.) 将其 Visible 属性设置为 False。 (记住,计算机不会犯错误——它们会撒谎。所以让我们来算一算吧。)
在表单属性菜单上,将 CancelButton 属性设置为您的不可见取消按钮。
在表单属性菜单上,将 KeyPreview 属性设置为 True。
双击不可见的 CancelButton 并添加 Me.Dispose()
现在你要处理一个非常糟糕的问题。结构化编程的基本原则之一是“例程必须只有一个出口”。您不想在两个不同的地方处理退出例程。您的用户可以通过使用右上角的“Esc”退出。结构化编程真是太棒了。所以 。 . .
红色按钮右上角的黑色“X”调用 FormName_Deactivate -- 如果您的表单名称是 FormSanta,那么它就是 FormSanta_Deactivate。为了简单起见,不要介意正确的方法,(你的天鹅绒血汗工厂里的微型农奴,你能听到我在哭吗?)给你的右上角“X”按钮和你的隐形退出按钮相同的代码。然后添加 Me.Close()
【讨论】:
【参考方案4】:必须将表单的“KeyPreview”属性设置为true,否则这将不起作用...
【讨论】:
以上是关于按下 Escape 键时关闭 VB.NET 表单的主要内容,如果未能解决你的问题,请参考以下文章