【解決方法】タブキーはどのようにタブコントロール内のコントロールにのみフォーカスを移動しますか?


こんにちは、親フォームに UserControl を配置します。この UC の内側にはタブ コントロールがあり、各タブには他のコントロールがいくつかあります。フォーカスがタブ コントロールの内側にある場合、タブ キーは親フォーム内の他の要素ではなく、タブ コントロール タブ内のフォーカスを変更します。 .

例:親フォームにはタブコントロールとボタン1があります。タブコントロールには2つのタブがあり、タブ1にはコントロール1とコントロール2が含まれています。 tab2 には Control3 と Control4 が含まれます。
フォーカスがタブ1内のControl2にあり、タブを押すと、フォーカスはボタン1に移動しますが、タブ2内のコントロール3にフォーカスを移動したいです。

何か提案はありますか?事前に感謝します

解決策 1

これを行うべきではありません。実際に行うべきではありません。標準的なウィンドウのフォーカスの「流れ」を覆し、おそらくユーザーを混乱または苛立たせます。 それは確かに私を悩ませるでしょう!

私の知る限り、それを行う唯一の方法は、ユーザーコントロールの外から、タブオーダーの次のコントロールに到達したフォーカスを検出し、それをユーザーコントロールに戻すか、最終コントロールでTABを自分で処理することですシステムに任せる代わりに。
厄介なユーザー エクスペリエンスのための厄介なコード!

解決策 3

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Right)
            {
                if (tabControl1.SelectedIndex == 0)//Control2 inside tab1
                {
                    TabPage t = tabControl1.TabPages[1];
                    tabControl1.SelectTab
                    return true;
                }

               
            }
            if (keyData == Keys.Left)
            {
                if (tabControl1.SelectedIndex == 6)//Control2 inside tab1
                {
                    TabPage t = tabControl1.TabPages[5];
                    tabControl1.SelectTab
                    return true;
                }

              

            }
            return base.ProcessCmdKey(ref msg, keyData);
        }

コメント

タイトルとURLをコピーしました