.net - 禁用 TabControl 上的默认快捷方式

标签 .net winforms tabcontrol

Alt text

Ctrl + PageUp/PageDown 和 Ctrl + Tab 是 TabControl 的默认快捷键。它们有助于在相邻选项卡之间移动。当我的焦点位于控件(此处为文本框)时,我希望 Ctrl + PageX 行为仅适用于外部选项卡(tab1、tab2)和内部选项卡(tab3、tab4)的 Ctrl + Tab 行为。为此,我需要禁用默认行为。有没有办法做到这一点?

我查看了 ProcessDialogKey 和 IsInputKey,但它们似乎只适用于单个键数据。不处理修饰符。

最佳答案

TabControl有不寻常的键盘快捷键处理,它们反射(reflect)到 OnKeyDown()方法。这样做是为了避免干扰选项卡页上控件的键盘处理。

您必须覆盖该方法。向您的项目添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到您的 Form .

using System;
using System.Windows.Forms;

class MyTabControl : TabControl {
  protected override void OnKeyDown(KeyEventArgs e) {
    if (e.KeyData == (Keys.Tab | Keys.Control) ||
        e.KeyData == (Keys.PageDown | Keys.Control)) {
      // Don't allow tabbing beyond last page
      if (this.SelectedIndex == this.TabCount - 1) return;
    }
    base.OnKeyDown(e);
  }
}

关于.net - 禁用 TabControl 上的默认快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952839/

相关文章:

c# - C#中的字符串提取混淆

c# - 如何在 TabControl 中设置新 TabPage 页面的属性?

c# - log4net 配置 - 找不到部分

.net - ASP.NET MVC 中的 LINQ to SQL 导致 DuplicateKeyException

c# - 语义相同的两个属性的 TypeId 应该不同还是相同?

C#:可以返回新添加对象的排序位置的通用排序容器?

c# - 在声明的路径中找不到文件

c# - Crystal Report 参数再次不起作用

c# - 在 C# 中从 TabControl 中删除 tabPage 时引发什么事件

vb.net - TabPage 中的 TabControl