【问题标题】:Shortcuts to change the active tab in my application在我的应用程序中更改活动选项卡的快捷方式
【发布时间】:2009-11-11 21:39:52
【问题描述】:

我的应用程序有一个主窗口,其中包含一个带有大约 7 个 TabItem 的 TabControl。在每个 tabItem 里面我放了一个 UserControl。

当用户按下组合键然后用户界面跳转到特定选项卡时,我希望(无论是活动选项卡还是控件)。也就是说,和 Firefox 相同的行为:alt+1 进入第一个选项卡,alt+n 进入第 N 个选项卡。

我怎样才能做到这一点?或者...我应该开始搜索什么?

我不能给你看任何代码,因为问题是我不知道如何开始。

谢谢

【问题讨论】:

  • 我假设你不想允许Alt-42
  • +1,因为这显然是一个不平凡的问题。
  • @Slacks:也许吧,因为 42 是生命、宇宙和一切的答案……而我们对未来的键盘一无所知。 :D
  • @Jonathan:我选择 42 是有原因的。:) 顺便说一下,SLaks 没有c

标签: c# winforms user-interface keyboard-shortcuts


【解决方案1】:

设置表单的KeyPreview属性为true,覆盖表单的OnKeyDown(或OnKeyUp)方法,并放入如下代码:(未测试)

protected override void OnKeyDown(KeyEventArgs e) {
    base.OnKeyDown(e);
    if (e.Alt && e.KeyCode > '0' && e.KeyCode <= '9') {
        tabControl.SelectedIndex = (int)(e.KeyCode - '1');
        e.Handled = true;
    }
}

【讨论】:

  • 经过测试并完美运行。我只用 e.KeyValue 改变了 e.KeyCode。谢谢。
  • 既然我们覆盖了表单的OnKeyDown,那么KeyDown 将不再起作用,所以如果我是正确的,如何使用以下短键序列ctrl + 1,2,3...9 来实现它?
  • @sam:你也需要调用base方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多