Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 无法在“向下键”中拾取制表键_Vb.net_Winforms_Keydown - Fatal编程技术网

Vb.net 无法在“向下键”中拾取制表键

Vb.net 无法在“向下键”中拾取制表键,vb.net,winforms,keydown,Vb.net,Winforms,Keydown,我正在开发一个应用程序,它使用许多在运行时交换的面板。面板的交换通过处理keydown事件和检查应用程序的当前“状态”来控制,以确定如何路由键 我在表单设计器中做了一些清理工作,四处移动面板和标签,现在我不知何故禁用了主表单在keydown事件中拾取tab键的功能。我仍然得到所有其他键,包括回车键 代码没有更改,并且经过了大量测试,使用tab键可以正常工作,因此我只能想象在设计器中玩时意外关闭了一些重要属性 我已经在我的主窗体中打开了keypreview。由于我得到了其他关键事件,我不认为我的k

我正在开发一个应用程序,它使用许多在运行时交换的面板。面板的交换通过处理keydown事件和检查应用程序的当前“状态”来控制,以确定如何路由键

我在表单设计器中做了一些清理工作,四处移动面板和标签,现在我不知何故禁用了主表单在keydown事件中拾取tab键的功能。我仍然得到所有其他键,包括回车键

代码没有更改,并且经过了大量测试,使用tab键可以正常工作,因此我只能想象在设计器中玩时意外关闭了一些重要属性

我已经在我的主窗体中打开了keypreview。由于我得到了其他关键事件,我不认为我的keydown处理程序工作不正常。不知怎的,我的表单停止了输入tab键。tabindex是按顺序编号的,但它们应该无关紧要,因为在让tabindex决定下一次跳转之前,我使用keypreview来处理事件


我想这对曾经在那里战斗过的人来说可能是件容易的事。我有tab键仍在运行的备份,但我今天在逻辑上有了飞跃,所以我还没有准备好回滚或并排比较表单上的每个对象。

这不应该起作用。当窗体上有任何可以获得焦点的控件时,将不会。Tab键和光标键用于导航,将焦点从一个控件移动到另一个控件

KeyPreview属性是VB6传统兼容性属性,用于实现自定义快捷键击。截取导航键的代码在触发表单的KeyDown事件的代码之前运行。相反,您应该重写ProcessCmdKey()方法,它在导航代码之前运行,以便可以看到选项卡键和光标键:

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    If keyData = Keys.Tab Then
        '' Do something, preferably navigation related since that what the user expects
        ''...
        Return True   '' That means that the key was consumed
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

我搜索tabstop并寻找一个与此相同的对象

我在VS中的“find”没有找到任何东西,但后来我在我添加到项目中的最后一个面板上看到了一个列表框,它打开了tabstop


关闭此选项使我回到了最初的状态,我的代码选择了tab键。

这对Hans Passant很有帮助。你的解释让我意识到,在我的项目中,我一直在处理按键和导航错误。我可能已经加入了变通标志来修复一些您的事件将完全消除的问题。谢谢