さて、PropertyGrid とコレクションの使用に関するいくつかの質問を読みました。しかし、どのように/どのように機能するかを理解するのに苦労[TypeConverter]
しています。私は MSDN が公開している小さな宣伝文句を読みましたが、率直に言って、この貧弱で独学のプログラマーには少し欠けています。
だから、ここに私が持っているものがあります。最初のコレクション:
[Serializable]
public List<ModuleData> Modules
{ get { return modules; } }
private List<ModuleData> modules;
コレクション内のオブジェクト:
[Serializable]
internal class ModuleData : IEquatable<ModuleData>
{
// simple data class with public properties
// to display in the propgrid control
}
ModuleData オブジェクトと BatchData オブジェクトの両方を記述する項目を含む ListView コントロールがあります。ListView から BatchData 項目を選択すると、予想どおり、PropertyGrid にコレクション エディターが表示されます。コレクション エディターを、ListView コントロールにリストされている ModuleData 項目のみに制限する方法はありますか? 理想的には、(ListView からの) BatchData アイテムを BatchData コレクションに追加したくありません。特に、コレクションは BatchData オブジェクト タイプに対して「型指定」されていないためです。
さらにコード サンプルが必要な場合は、スニペットを編集して喜んで差し上げます。
わかりやすくするために、ModuleData は、指定されたアセンブリ内のクラスをインスタンス化するために必要なデータを保持するカスタム クラスです。含まれているのは、フィールドとパブリック/内部プロパティだけです。私がやりたいことは、プロパティ グリッド コントロールでアセンブルされたコレクション エディターを使用して、ModuleData オブジェクトを BatchDataModule
コレクションに追加することです。追加できる ModuleData オブジェクトは、ListView コントロールに一覧表示されます。
編集:: List<ModuleData>
継承を削除しました。
更新: カスタム コレクション エディターを作成する場合、それは独自のカスタム フォーム/ダイアログを作成することを意味しますか? 次に、基本的に、UITypeEditor の属性と継承を通じて、カスタム コレクション ダイアログを表示するための情報をプロパティ グリッドに提供しますか?