TabControl
有一些特别的键盘快捷键处理方法,它们都在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);
}
}
如Hans Passant的回答所述,除非您在选项卡控件的最后一页上,否则该方法无法工作。我想要一些方法不允许在任何选项卡上使用快捷键。下面的代码还包括了AZ额外的逻辑来处理Ctrl+PageUp和Ctrl+PageDown。希望这个版本能使整体逻辑更加清晰:
using System.Windows.Forms;
namespace MyNameSpace
{
internal class NoTabTabControl : TabControl
{
/// <summary>
/// Intercept any key combinations that would change the active tab.
/// </summary>
protected override void OnKeyDown(KeyEventArgs e)
{
bool changeTabKeyCombination =
(e.Control
&& (e.KeyCode == Keys.Tab
|| e.KeyCode == Keys.Next
|| e.KeyCode == Keys.Prior));
if (!changeTabKeyCombination)
{
base.OnKeyDown(e);
}
}
}
}
tabpageX.Enabled
属性更改为 false
。然后使用 Ctrl + Tab 将无法选择 tabpageX
。
if ( ke.Control && (ke.KeyCode == Keys.Tab || ke.KeyCode == Keys.Next || ke.KeyCode == Keys.Prior)) return;
。 - AZ.