如何为Windows窗体TabControl设置键盘快捷键?

cha*_*ama 6 vb.net tabcontrol keyboard-shortcuts hotkeys winforms

是否有一种简单的方法为Visual Studio 2010中的选项卡控件中的选项卡设置键盘快捷键?我可以设置一些属性吗?

我在网上看了,但我看到的所有文章都很混乱.

Cod*_*ray 6

不幸的是,没有任何这样的属性,但实现这个功能也不一定很困难.根据应用程序的设计,有两种方法值得考虑.

  1. 如果承载TabControl已经使用菜单系统的表单,则设置几乎是微不足道的.首先,您需要添加一个菜单命令,切换到TabPage您的每个菜单TabControl.然后,你可以简单地添加一个快捷键到菜单项(这一个简单财产MenuItem/ ToolStripMenuItem),这样,每当按下此键,该菜单命令被执行,其切换到合适的TabPage.

  2. 但是,菜单系统可能不适合每个表单.如果是这样的话,你将不得不做更多的工作.基本上,您需要将KeyPreview托管您的表单的属性设置TabControl为True,并检测要用于切换选项卡的键盘快捷键.

    设置表单的KeyPreview属性允许该表单在将这些事件传递给具有焦点的控件之前接收键事件.这对于此方法的工作至关重要,否则,表单的KeyDown事件处理程序中的代码将永远不会检测到您要捕获的键击.只有在表单完成处理后,每次击键才会将它们传递给通常会接收它们的控件.

    因此,一旦设置了此属性,就需要为表单的KeyDown事件处理程序添加代码,以监视要使用的键盘快捷键,然后在检测到其中一个键被按下时切换相应的标签.否则,您不必做任何事情.

    例如,如果TabPages表单上有三个,您可能会决定F2切换到第一个选项卡,F3切换到第二个选项卡,然后F4切换到第三个选项卡(尽管显然,您可以使用您想要的任何键).然后,您可以将以下代码添加到表单的KeyDown事件处理程序中,该处理程序检测到这些键被抑制并相应地执行操作:

     Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Select Case e.KeyCode
           Case Keys.F2
              'Switch to the first tab page
              MyTabControl.SelectedIndex = 0
           Case Keys.F3
              'Switch to the second tab page
              MyTabControl.SelectedIndex = 1
           Case Keys.F4
              'Switch to the third tab page
              MyTabControl.SelectedIndex = 2
        End Select
     End Sub
    
    Run Code Online (Sandbox Code Playgroud)