シナリオがどうであれ、この厄介な問題を 100% の確率で再現できます。.Net プロジェクト、C# または VB.Net を作成します。ToolStrip コントロールをフォームに追加します。少なくとも 2 つのメニュー項目を含む単純な DropDownButton をいくつか作成します。必要なその他のコントロール、リスト ボックス (正しくフォーカスを受け取ることができるように設定します)、および ComboBox コントロールを追加します。ショートカット キーを割り当てるか、ToolStrip で TabStop を有効にして、キーボードでフォーカスを受け取ることができるようにします。
プロジェクトを実行します (デバッグ/リリース、好きな方)。キーボードを使用して、ToolStrip にフォーカスを与えます (タブまたはショートカット キーを使用)。下向き矢印でサブ項目に移動します。エスケープ キーを選択して、ツールストリップ サブメニューを折りたたみます。いくつかの項目を含む ListBox または ComboBox に移動します。すべてが素晴らしく見えますよね?これらのコントロール内を移動するには、矢印キーを使用してください... 驚きです! ToolStrip に背を向けても、フォーカスがあると思っていたコントロールはそうではありません!
ListBoxにフォーカスを強制するために、複数のことを試しました。一例として、OnEnter (ListBox.Enter+=...) のイベント ハンドラーを追加し、次のようなコードを追加します。
ListBox.Focus();
ListBox.Select();
何も成功しませんでした...ツールストリップでメニューが展開されると、キーボードを使用してこのコントロールに永遠に行き詰まるようです...キーボード ナビゲーションのみ...これはバグですか? MFCでこれを再現できません...
助言がありますか?
更新 この奇妙さを再現しないコントロールを見つけることができました...
System.Windows.Forms.MainMenu は、他のオブジェクトのように動作しない唯一の "ツールバー オブジェクト" です...
ただし、上記についてのフィードバックが必要です(他の人や自分のためのヘルプ)...
更新 2 根本的な問題は [ToolStripObject].TabFocus プロパティ内にあります... false に設定すると、すべて正常に動作するように見えます... フォーカスされているように「見える」コントロールにフォーカスを戻します。しかし、視覚障害のあるユーザーがタブを介してすべての UI コントロールをナビゲートできるようにする機能は、実装するのに便利です...このプロパティが本来のように機能しないのは残念です....