我正在尝试扩展 TabControl 以隐藏所有选项卡。根据 Hans Passant 的回答(https://stackoverflow.com/a/2207774/965722),我创建了如下代码:
using System;
using System.Windows.Forms;
class ViewStack : TabControl
{
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.Tab) || keyData == (Keys.Control | Keys.Shift | Keys.Tab) || keyData == (Keys.Left) || keyData == (Keys.Right))
{
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
这种方式选项卡在设计模式下可见并隐藏在可执行文件中。我需要做的是禁用此控件的所有可能的内置键盘快捷键,以便更改选项卡只能通过代码使用。
目前,我已使用 Ctrl + Tab、Ctrl + Shift + Tab 和左/右箭头阻止导航。
我应该阻止哪些其他快捷方式以使最终用户无法自行更改选项卡(使用 TabControl 中构建的任何组合键)?