如何让方向键不控制控件焦点的跳转

winRookie 2007-11-28 03:30:35
在窗体上画几个command,运行窗体的时候按方向键能切换command的焦点,可是怎么做才能按下方向键的时候控件焦点不转移?
Private Sub form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 37
Print "left"
Case 38
Print "up"
Case 39
Print "right"
Case 40
Print "down"
End Select
End Sub
上面是一段实验程序,在窗体上什么都没有的时候执行能看见结果
当窗体上有能获得焦点的控件的时候,就没显示了,该怎么搞?
麻烦各位高人!
...全文
221 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2007-11-29
  • 打赏
  • 举报
回复
顶~~~~
Tiger_Zhao 2007-11-29
  • 打赏
  • 举报
回复
你看的那个MSDN,这才是VB6的:

说明
  可以用该属性,生成窗体的键盘处理程序,例如,应用程序利用功能键时,需要在窗体级处理击键,而不是为每个可以接收击键事件的控件编写程序。
  如果窗体中没有可见和有效的控件,它将自动接收所有键盘事件。
  若要在窗体级处理键盘事件、而不允许控件接收键盘事件时,在窗体的 KeyPress 事件中设置 KeyAscii 为 0,在窗体的 KeyDown 事件中设置 KeyCode 为 0。

注意
  一些控件能够拦截键盘事件,以致窗体不能接收它们。这样的例子有:CommandButton 控件有焦点时的 ENTER 键、以及焦点在 ListBox 控件上时的方向键。
winRookie 2007-11-29
  • 打赏
  • 举报
回复
似乎有点眉目了!多谢老鸟了!
winRookie 2007-11-28
  • 打赏
  • 举报
回复
奇怪了!当在窗体上再画个textbox的时候将form设KeyPreview=True
代码部分不加处理
能够显示了,这是为什么?
MSDN解释keypreview属性是这样的:
当此属性设置为 true 时,窗体将接收所有 KeyPress、KeyDown 和 KeyUp 事件。在窗体的事件处理程序处理完该击键后,然后将该击键分配给具有焦点的控件。例如,如果 KeyPreview 属性设置为 true,而且当前选定的控件是 TextBox,则在窗体的事件处理程序处理了击键后,TextBox 控件将接收所按的键。要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体的 KeyPress 事件处理程序中的 KeyPressEventArgs.Handled 属性设置为 true。
最后一句:请将窗体的 KeyPress 事件处理程序中的 KeyPressEventArgs.Handled 属性设置为 true。该怎么用?
VB老鸟能否麻烦解释下?
  • 打赏
  • 举报
回复
改用image 控件
Tiger_Zhao 2007-11-28
  • 打赏
  • 举报
回复
在case语句中判断出要过滤的健值后更改为0。
还有KeyUp事件也相同处理,两个事件一起或者单独一个试试。
winRookie 2007-11-28
  • 打赏
  • 举报
回复
还是不行,我将form的KeyPreview设置为True,另外在事件中赋值KeyCode=0,等于0的时候不代表任何键怎么来判断呢?
Tiger_Zhao 2007-11-28
  • 打赏
  • 举报
回复
form设KeyPreview=True,上面的事件中赋值KeyCode=0

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧