すべてのタブを非表示にできるように 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 に組み込まれている任意のキーの組み合わせを使用して) 自分でタブを変更できないようにするには、他にどのショートカットをブロックする必要がありますか?