この回答は VB.NET に適用されます。これを DLL 用の C# に変換する予定ですが、今のところ vb.net にあります。これは、このアイデアの出発点であり、プロジェクトの言語が vb.net であるためです。
これが私がこれまでに持っているものです:
ToolStripMenuItemExt
目的: 私の習慣ToolStripMenuItem。
ToolStripMenuItemExtCheckListSheetの DropDownItems への参照を含む があります( ToolStripMenuItemExtbyval ではなく、dropdownitems を byref で渡しました)。CheckListsのオブジェクトを返すプロパティが 1 つありますCheckListSheet。
チェックリストシート
目的: 監視可能なコレクション型と で返すコレクションのオブジェクトを通じて、監視しているコレクションへの参照を維持しますToolStripMenuItemExt。
CheckListSheetオブジェクトを持っていCheckListsます。ref で渡すドロップダウン項目は に保存されますObservableToolStripItemCollection。うまくいけば、テストを行うときに、 を継承するため、チェックリストのコレクションを簡単に更新できるようになりますObservableCollection(of ToolStripItemCollection)。このクラスには、プライベート共有のスコープ識別子を持つ監視可能なコレクションを返す共有関数もあります。
チェックリスト
目的:オブジェクトCollectionBaseを格納する型CheckList。
チェックリスト
目的:ToolStripItemCollectionオブジェクトが単一項目のチェック済みチェックリストとして機能する を格納します (一度に 1 つの項目のみがチェックされます)。
これには、デザイナー用のいくつかのプロパティと、チェック リスト用のコレクションがあります。最終的には、チェックするロジックを追加し、自動的にチェックを外してイベントを発生させます。
MenuItemCheckListCollectionEditor
目的:既知のインスタンス化 ToolStripItemされたオブジェクトのコレクションを表示して に追加できるようにしますCheckList。
現在、タイプまたはタイプの配列を指定して、それがどのタイプであるかを確立できるようにするCollectionEditor必要があります。ToolStripItemタイプのドロップダウンやオブジェクトのドロップダウンを表示できません。名前に ToolStrip を含むクラスはすべて ToolStripItem を継承するため、このタイプのオブジェクトを使用します。
誰かが私の現在の回答についてアドバイスを持っているか、予見可能な落とし穴を予測できる場合は、共有してください. あなたが c# で話すか vb.net で話すかは気にしません。たぶん、これを停止して C# コードに変換する必要があります。多分これは不可能です。私は進歩していますが。非常に役立つのは、MenuStrip のコレクション エディターが ToolStripItems のドロップダウンを設定する方法を理解することです。
[アップデート]
コレクション エディタでは、表示するタイプを指定する必要があります。この型は継承する必要CollectionBaseがあります。つまり、設計時にドロップダウン項目を参照する方法はありません。:はぁ: