ツール ストリップ メニュー項目がいつ表示されるかを知る必要があります (JIT ベースでコンテンツを作成するため)。
私は潜在的に非常に大きなものの階層を持っています。ツリービューでナビゲートできますが、「ブレッドクラム」を介してナビゲートすることもできます。たとえば、「ミュージック > ポップ > マイケル ジャクソン > バッド」などです。ブレッドクラムはツールストリップによって実装され、各レベルには LinkLabel が表示されます。「音楽」などのリンクをクリックすると、現在の項目のすべての兄弟を含むコンテキスト メニューが動的に作成されます。
階層全体が常に読み込まれているような錯覚を起こそうとしています。データをフェッチするときは、ノードを提示するのに十分な情報を取得し、そのノードに子があるかどうかを確認します。子がある場合は、「このアイテムには子がアンロードされています」という特別な意味を持つダミー ノードを作成し、それを唯一の子として配置します。これにより、ツリービューはノードを展開可能としてレンダリングします。次に、ツリービューの BeforeExpand イベントを使用して次のレベルを取得し、実際に表示されるタイミングでノード コレクションを更新します。
これはツリーではうまく機能しますが、ブレッドクラム スタイルのコンテキスト メニューでも同じことを行う必要があります。子を持つアイテムのサブメニューを既に作成し、そこに特別な「アンロードされた子」アイテムを配置しています。問題は、サブメニューがいつ表示されるかを知らせるイベントが見つからないことです。これは、ホバリング、クリック、キーボード ナビゲーションなどによって発生する可能性があります。私が見つけていないより適切なフックがある場合、私は本当にそれをハックしたくありません..
言い換えれば、私が必要とするのは「BeforeExpand」に相当するものですが、ToolStripMenuItem の場合 (MS 独自の命名ガイドラインに従って、イベントは「NodeExpanding」と呼ばれるべきであり、動名詞形式 (「ing」) を使用する必要があります。 「Before」接頭辞ではなく過去時制 (「After」接頭辞ではなく「Expanded」)。
私がやろうとしていることは明らかであり、誰かがこれを解決する方法を知っていることを願っています!