実行時のコレクションエディター
-
03-07-2019 - |
質問
プロパティグリッドを使用して名前/値のペアを編集するアプリケーションに取り組んでいます。 クラスファイルのプロパティの一部はListDictionaryコレクションです。ある 作成するプロパティ宣言で適用できるエディター属性 コレクションエディターは実行時に動作しますか?そうでない場合、から継承することは可能ですか 実行時に使用するComponentModel.Design.CollectionEditor?追加する必要があります コレクション値を削除および編集します。 どうもありがとう、 テリー
解決
この記事では、必要なものについて説明していると思います。コレクションを編集して永続化する方法CollectionEditor
他のヒント
codeprojectの記事[ http://www.codeproject.comから/KB/cs/dzcollectioneditor.aspx][1]
次の3つの要件があります。 収集するために会う必要があります と正常に永続化 CollectionEditor:
- 最初に、コレクションはIListインターフェースを実装する必要があります (から継承 System.Collections.CollectionBaseは ほとんどの場合、最適なオプションです。)
次に、インデクサー(VB.NETのアイテム)プロパティが必要です。のタイプ このプロパティは CollectionEditorは インスタンスのデフォルトタイプ コレクションに追加されます。
これがどのように機能するかをよりよく理解するには、GetItemType()を見てください。 の機能 CustomCollectionEditorForm:
保護された仮想タイプGetItemType(IList coll) { PropertyInfo pi = coll.GetType()。GetProperty(" Item&quot ;, 新しいType [] {typeof(int)}); pi.PropertyTypeを返します }
第三に、コレクションクラスは次のいずれかまたは両方を実装する必要があります メソッド:AddおよびAddRange。でも IListインターフェイスにはAddメンバーがあり、 CollectionBaseはIListを実装します。 まだAddメソッドを実装する必要があります あなたのコレクションのために、 CollectionBaseは明示的に宣言します IListのメンバー実装 メンバーを追加します。デザイナーがシリアライズします 何によるコレクション 実装したメソッド。もし、あんたが 両方を実装した場合、AddRangeは 優先。
この記事では、プロパティグリッドにコレクションを実装するために必要なものがすべて揃っています