3

ToolStripMenuItemアイテムのチェックとチェック解除を自動的に処理するのチェック リストを作成しようとしています。次に、プログラマーにイベントを提供して、次に何が起こるかを処理できるようにします。このようなものが既に存在する場合は、それがどこにあるのか知りたいです。カスタム用にコレクション エディターを作成しましたToolStripMenuItem。このチェックリストのコレクションにチェック リストを追加できます。私の問題は、次のようにコレクション エディターを作成することです。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), 
 Editor(typeof(ToolStripItemExtCollectionEditor), typeof(UITypeEditor))]

this をこのコレクション エディターに渡す必要があるToolStripMenuItemためDropDownitems、新しいチェックリストを追加してチェックリストの項目プロパティをクリックすると、既知の ToolStripMenuItems のいずれかをチェックリストに追加/チェックリストから削除できます。これはすべて属性内で発生しているため、参照を渡すことはできません。答えがリフレクションである場合、どこから始めればよいかわかりません。

4

1 に答える 1

0

この回答は 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があります。つまり、設計時にドロップダウン項目を参照する方法はありません。:はぁ:

于 2014-09-12T13:42:30.443 に答える