我有一个简单的模态形式,当按下 Esc 时我想关闭它。处理form_KeyDown
事件很简单。问题是表单上的控件。当表单首次启动时,其中一个按钮获得焦点并按 Esc 当然不会做任何事情。禁用每个按钮的TabStop
会阻止此操作,但是当使用任何按钮时, Esc 将再次停止工作。除了处理表单上每个控件的KeyDown
之外,有没有办法做到这一点?
答案 0 :(得分:8)
您的表单是否有“取消”按钮?
如果是这样,请将表单的CancelButton
属性设置为该按钮。
当按下 Esc 时,这将关闭表格。
答案 1 :(得分:4)
您需要将表单上的KeyPreview
属性设置为true
,并处理表单previewkeydown
事件。
答案 2 :(得分:0)
我试图在Compact Framework应用程序中执行或多或少相同的操作(我想让Form捕获F1..Fn键并以全局方式处理它们,同时让控件处理光标和数字键)。 Simon P Stevens的解决方案是桌面.NET的理想选择,但CF不支持PreviewKeyDown。所以我的解决方案是:
加载表单时,使用For Each ctl As Control In Controls
和AddHandler ctl.KeyDown, AddressOf OnControlKeyDown
创建OnControlKeyDown
并对其中的Fn键执行特殊处理。所有其他击键保持原样。
这似乎是为Compact Framework实现此功能的一种相当简单的方法。