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