我正在尝试扩展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中构建的任何组合键)?
答案 0 :(得分:0)
您可以使用:
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 || keyData == Keys.Home || keyData == Keys.End) {
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
这可以解决您的问题。