C# を .Net 2.0 で使用する (問題は 4.0 で発生しますが)
Windows フォームの ToolStrip コントロールと ToolStripControlHosts のフォーカスに関連するバグがあるようです。
次の例を考えてみましょう。ユーザーが ToolStripMenuItem "Test A" をクリックし、マウスを斜めにドロップ ダウン ToolStripMenuItem "5" に移動します。斜めにドラッグすると、マウスは「テスト B」の上を通過しますが、マウスがドロップダウン リストに入ると、フォーカスが「テスト B」から「テスト A」に自動的に戻ります。これは正しく動作します。
例 1 : http://i.stack.imgur.com/0X9mZ.png
同様の例を考えてみますが、ドロップダウン リストに ToolStripControlHost が含まれています。フォーカスを受ける「Test B」の上をマウスが斜めに移動します。マウスが ToolStripControlHost に入ると、フォーカスは親の "Test A" に返されないため、ドロップダウン リストが閉じ、ToolStripControlHost が非表示になります。
例 2 : http://i.stack.imgur.com/XJ75K.png
私の質問は、どうすればこの状況に対処できますか? ToolStripMenuItem "Test A" にフォーカスを強制する方法はありますか?
「テスト A」の DropDown の autoclose プロパティを false に設定してから、クローズ イベントを手動で処理しようとしましたが、これによりいくつかの問題が発生します。ToolStripControlHost がクリックされると、ToolStrip は、ToolStripDropDownCloseReason が AppClicked である OnClose イベントを受け取ります。さらに、ToolStripControlHost 内のテキスト ボックスは、テキスト イベントを受信しません。これは、ToolStrip がそれらを消費しているように見えるためです (バックスペースは、テキストを削除するのではなく、ドロップ ダウン リストでフォーカスを上に移動します)。
ご協力いただきありがとうございます
サイモン