1

我正在尝试扩展 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 中构建的任何组合键)?

4

1 回答 1

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);
    }

这应该可以解决您的问题。

于 2013-08-08T19:33:04.313 回答