1.オブジェクトのコレクションであるエントリのドロップダウンリストを表示します。
2.コレクションエディタを呼び出すオブジェクトのコレクションに関連付けられたフィールドを表示します。
例として、従業員情報管理を実装するタスクを取りましたが、これはEmployeeクラスによって実装され、クラスには2つのプロパティが含まれています。 最初はタイプJobTitleのプロパティ(ドロップダウンリストの従業員の位置)、2番目はタイプJobTitleCollectionのプロパティ(コレクションエディターの従業員投稿のコレクション)です。 タスクは、記事の冒頭の2つの図に示すように、PropertyGridにEmployeeクラスのオブジェクトを表示することです。 ComboBox要素のように、ドロップダウンリストを使用して、ユーザーが従業員の投稿の1つを選択できるフィールドを表示します。 投稿の関連付けられたコレクションのエディターを呼び出すことができるフィールドを表示し、コレクションの変更が完了したら、PropertyGridに投稿をリストとして表示します。
さらに詳しく考えてみましょう。
従業員クラス
JobTitleジョブクラス
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
/// <summary> /// /// </summary> [DisplayName( "" ), Description( " " ), Category( "" )] public class Employee { private JobTitle jt = new JobTitle (); /// <summary> /// , /// ( JobTitle) /// </summary> [DisplayName( "" ), Description( " " ), Category( " " )] [TypeConverter( typeof ( JobTitleTypeConverter ))] public JobTitle jobtitle { get { return jt; } set { jt = value ; } } private JobTitleCollection jobTitles = new JobTitleCollection (); /// <summary> /// , /// PropertyGrid /// </summary> [Description( " " ), Category( "" ), DisplayName( "" )] [TypeConverter( typeof ( JobTitleCollectionConverter ))] public JobTitleCollection JobTitles { get { return jobTitles; } set { jobTitles = value ; } } }
問題解決
- /// <summary>
- ///従業員の位置
- /// </ summary>
- [DisplayName( "Position" )、Description( "Position of the employee" )、Category( "Employeeに関する情報" )]
- [TypeConverter( typeof ( JobTitleConverter ))]
- パブリッククラス JobTitle : MyItem
- {
- /// <summary>
- ///コンストラクター
- /// </ summary>
- 公開 ジョブタイトル (){}
- /// <summary>
- ///コンストラクター
- /// </ summary>
- /// <param name = "ID">レコードID </ param>
- /// <param name = "ItemName">名前</ param>
- public JobTitle ( int ID、 文字列 ItemName)
- {
- this .ID = ID;
- this .ItemName = ItemName;
- }
- }
PropertyGridオブジェクトが投稿のドロップダウンリストを正しく表示できるように、JobTitle型を変換するクラスを実装する必要があります。 Employeeクラスのオブジェクトの作成時に、リストに表示するためにいくつかの投稿がコレクションに追加され、その後、コレクションをドロップダウンリストに表示し、EmployeeクラスのオブジェクトのJobTitleCollectionフィールドで編集できると想定されます。 -JobTitleTypeConverter。 さらに、このクラスに加えて、問題の解決に必要な追加のクラスが実装されます。
この例のソースコードは利用可能です。 リンクは記事の最後に複製されます。
PropertyGridに表示されるオブジェクト情報の管理は、属性を使用して実行されることにすぐに注意します。 これにより、目的の情報表示スタイルを設定できます。 さらに、属性はソリューションの実装で積極的に使用されます。
ポストコレクションクラス
- /// <summary>
- /// JobTitle型変換クラス
- ///文字列に変換してJobTitleに戻す
- ///また、投稿のコレクションをドロップダウンリストの形式で表示できます
- /// </ summary>
- パブリッククラス JobTitleTypeConverter : ExpandableObjectConverter
- {
- /// <summary>
- ///オブジェクトが標準の値セットをサポートするかどうかを示す値を返します。
- ///リストから選択できます。
- ///値を強制的にtrueにしないと、チャンスがあります
- ///ハンドラーがGetStandardValuesメソッドを受け入れず、表示されないこと
- ///選択する値のリスト
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <returns> </ returns>
- public override bool GetStandardValuesSupported( ITypeDescriptorContext context)
- {
- trueを返します 。
- }
- /// <summary>
- ///このメソッドは除外できますが、将来このコンバータークラスを使用できるようになります
- ///異なるクラスから呼び出すため。
- ///これを行うには、プロパティを含む別のクラスの名前をケースセクションに追加するだけです
- ///ドロップダウンリンク機能を備えたJobTitle
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <returns> </ returns>
- プライベート JobTitleCollection GetCollection(System.ComponentModel。ITypeDescriptorContextコンテキスト)
- {
- JobTitleCollectionコレクション= 新しい JobTitleCollection ();
- スイッチ (context.Instance.GetType()。名前)
- {
- ケース 「従業員」 :
- collection =((Employee)context.Instance).JobTitles;
- 休憩 ;
- デフォルト :
- collection =((Employee)context.Instance).JobTitles;
- 休憩 ;
- }
- 返品コレクション;
- }
- /// <summary>
- ///メソッドは、ドロップダウンに表示する投稿のコレクションから値のリストを返します
- ///従業員の位置の値のリストPropertyGrid
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <returns> </ returns>
- TypeConverterをオーバーライドします 。 StandardValuesCollection GetStandardValues( ITypeDescriptorContextコンテキスト)
- {
- 新しい StandardValuesCollectionを 返す (GetCollection(コンテキスト));
- }
- /// <summary>
- ///メソッドは、ユーザーから取得したプロパティ値を変換できるかどうかを確認します
- ///必要な型に
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <param name = "destinationType"> </ param>
- /// <returns> </ returns>
- パブリックオーバーライドbool CanConvertTo( ITypeDescriptorContextコンテキスト、 type destinationType)
- {
- if (destinationType.Equals( typeof ( string )))
- {
- trueを返します 。
- }
- 他に
- {
- falseを返します 。
- }
- }
- /// <summary>
- /// JobTitle型を文字列に変換して、PropertyGridに値を表示します
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <param name = "culture"> </ param>
- /// <param name = "value"> </ param>
- /// <param name = "destinationType"> </ param>
- /// <returns> </ returns>
- パブリックオーバーライドオブジェクト ConvertTo( ITypeDescriptorContextコンテキスト、
- System.Globalization。 CultureInfoカルチャ、 オブジェクト値 、 Type destinationType)
- {
- if (destinationType == typeof ( string )&& value is JobTitle )
- {
- JobTitleアイテム=( JobTitle ) 値 ;
- return item.FullName;
- }
- return base .ConvertTo(context、culture、 value 、destinationType);
- }
- /// <summary>
- ///文字列表現のJobTitle型への逆変換の可能性を確認します
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <param name = "sourceType"> </ param>
- /// <returns> </ returns>
- パブリックオーバーライドbool CanConvertFrom( ITypeDescriptorContextコンテキスト、 Type sourceType)
- {
- if (sourceType.Equals( typeof ( string )))
- {
- trueを返します 。
- }
- 他に
- {
- falseを返します 。
- }
- }
- /// <summary>
- ///投稿の文字列表現をJobTitleタイプに変換します。
- ///この変換の欠点は、形式に応じて型変換が正しく機能することです
- /// JobTitle型の文字列表現、つまり重複値から。
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <param name = "culture"> </ param>
- /// <param name = "value"> </ param>
- /// <returns> </ returns>
- パブリックオーバーライドオブジェクト ConvertFrom( ITypeDescriptorContextコンテキスト、
- System.Globalization。 CultureInfoカルチャ、 オブジェクト値 )
- {
- if ( value .GetType()== typeof ( string ))
- {
- JobTitle itemSelected = GetCollection(context).Count.Equals( 0 )?
- new JobTitle ():GetCollection(context)[ 0 ];
- foreach ( GetCollection (コンテキスト)のJobTitleアイテム)
- {
- string sCraftName = Item.FullName;
- if (sCraftName.Equals(( string ) value ))
- {
- itemSelected =アイテム;
- }
- }
- return itemSelected;
- }
- 他に
- return base .ConvertFrom(context、culture、 value );
- }
- /// <summary>
- ///標準値のコレクションが完全なリストであるかどうかを示す値を返します。
- ///メソッドによって返されます。
- ///
- /// false-データは手動で入力できます
- /// true-リストからの選択のみ
- /// </ summary>
- /// <param name = "context"> </ param>
- /// <returns> </ returns>
- public override bool GetStandardValuesExclusive( ITypeDescriptorContext context)
- {
- trueを返します 。
- }
- /// <summary>
- ///メソッドコンストラクター
- /// </ summary>
- public JobTitleTypeConverter (){}
- }
コレクションクラスを実装するには、CollectionBaseクラスからそれを継承し、ICustomTypeDescriptorインターフェイスを実装する必要があります。 これにより、コレクションを使用してPropertyGridに正しく表示できます。 これを行うには、JobTitleCollectionPropertyDescriptorコレクションのプロパティ記述子クラスの実装を使用します。
追加のJobTitleオブジェクトコレクションプロパティの説明クラス
- /// <summary>
- ///コレクションの投稿クラス
- ///コレクションプロパティの内容を説明する情報を提供するメソッドが含まれています
- ///およびPropertyGridに表示
- /// </ summary>
- [DisplayName( "投稿リスト" )、説明( "従業員の投稿リスト" )、カテゴリ( "従業員情報" )]
- パブリッククラス JobTitleCollection : CollectionBase 、 ICustomTypeDescriptor
- {
- #regionコレクションメソッド
- public void Add( JobTitle Item)
- {
- this .List.Add(アイテム);
- }
- public void remove( ジョブタイトル項目)
- {
- this .List.Remove(アイテム);
- }
- public JobTitle this [ int Index]
- {
- get { return ( JobTitle ) this .List [インデックス]; }
- }
- #endregion
- #region ICustomTypeDescriptorインターフェースの実装
- public String GetClassName()
- {
- Return TypeDescriptor.GetClassName( this 、 true );
- }
- public AttributeCollection GetAttributes()
- {
- Return TypeDescriptor.GetAttributes( this 、 true );
- }
- public String GetComponentName()
- {
- Return TypeDescriptor.GetComponentName( this 、 true );
- }
- パブリック TypeConverter GetConverter()
- {
- Return TypeDescriptor.GetConverter( this 、 true );
- }
- public EventDescriptor GetDefaultEvent()
- {
- Return TypeDescriptor.GetDefaultEvent( this 、 true );
- }
- public PropertyDescriptor GetDefaultProperty()
- {
- Return TypeDescriptor.GetDefaultProperty( this 、 true );
- }
- パブリックオブジェクト GetEditor( タイプ editorBaseType)
- {
- TypeDescriptor.GetEditor( this 、editorBaseType、 true );を返します 。
- }
- public EventDescriptorCollection GetEvents( 属性 []属性)
- {
- TypeDescriptor.GetEvents( this 、attributes、 true );を返します。
- }
- public EventDescriptorCollection GetEvents()
- {
- return TypeDescriptor.GetEvents( this 、 true );
- }
- パブリックオブジェクト GetPropertyOwner( PropertyDescriptor pd)
- {
- これを返す ;
- }
- public PropertyDescriptorCollection GetProperties( 属性 []属性)
- {
- GetProperties()を返します。
- }
- public PropertyDescriptorCollection GetProperties()
- {
- PropertyDescriptorCollection pds = new PropertyDescriptorCollection ( null );
- for ( int i = 0 ; i < this .List.Count; i ++)
- {
- JobTitleCollectionPropertyDescriptor pd = new JobTitleCollectionPropertyDescriptor ( this 、i);
- pds.Add(pd);
- }
- pdsを返します。
- }
- #endregion
- }
ポストコレクションコンバーターの追加クラス
- /// <summary>
- /// JobTitleオブジェクトコレクションプロパティの説明クラス
- /// </ summary>
- パブリッククラス JobTitleCollectionPropertyDescriptor : PropertyDescriptor
- {
- プライベート JobTitleCollectionコレクション= null ;
- private int index = -1 ;
- public JobTitleCollectionPropertyDescriptor (JobTitleCollection coll、 int idx):
- ベース ( "#" + idx.ToString()、 null )
- {
- this .collection = coll;
- this .index = idx;
- }
- AttributeCollection属性をオーバーライドします
- {
- 得る
- {
- 新しい AttributeCollection ( null );
- }
- }
- パブリックオーバーライドbool CanResetValue( オブジェクトコンポーネント)
- {
- trueを返します 。
- }
- パブリックオーバーライド タイプ ComponentType
- {
- 得る
- {
- この .collection.GetType()を返します。
- }
- }
- パブリックオーバーライド文字列 DisplayName
- {
- 得る
- {
- JobTitle Item = this .collection [インデックス];
- return Item.FullName;
- }
- }
- 公開オーバーライド文字列説明
- {
- 得る
- {
- JobTitle Item = this .collection [インデックス];
- StringBuilder sb = new StringBuilder ();
- sb.Append(Item.ItemName);
- sb.Append( "、" );
- sb.Append(インデックス+ 1 );
- return sb.ToString();
- }
- }
- パブリックオーバーライドオブジェクト GetValue( オブジェクトコンポーネント)
- {
- この .collection [インデックス]を返します。
- }
- パブリックオーバーライドbool IsReadOnly
- {
- get { falseを返す ; }
- }
- パブリックオーバーライド文字列 Name
- {
- get { return "#" + index.ToString(); }
- }
- パブリックオーバーライド タイプ PropertyType
- {
- get { this .collection [index] .GetType();を返します。 }
- }
- public override void ResetValue( オブジェクトコンポーネント)
- {
- }
- public override bool ShouldSerializeValue( オブジェクトコンポーネント)
- {
- trueを返します 。
- }
- パブリックオーバーライドvoid SetValue( オブジェクトコンポーネント、 オブジェクト値 )
- {
- }
- }
ポストタイプコンバーターの追加クラス
- /// <summary>
- /// PropertyGridのコレクションの標準表示のコンバーターのクラス
- ///指定「(Collection)」を「(Posts ...)」に置き換えます
- /// </ summary>
- パブリッククラス JobTitleCollectionConverter : ExpandableObjectConverter
- {
- パブリックオーバーライドオブジェクト ConvertTo( ITypeDescriptorContextコンテキスト、System.Globalization。CultureInfoカルチャ、
- オブジェクト値 、 タイプ destType)
- {
- if (destType == typeof ( string )&& value is JobTitleCollection)
- {
- return "(Posts ...)" ;
- }
- return base .ConvertTo(context、culture、 value 、destType);
- }
- }
従業員のクラスと役職のクラスの祖先
- /// <summary>
- ///コレクションエディターで正しく表示するためにJobTitle型変換を実行するクラス
- ///実装されていない場合、JobTitleコレクションのエディターウィンドウに内部名が表示されます
- /// JobTitleクラス
- /// </ summary>
- パブリッククラス JobTitleConverter : ExpandableObjectConverter
- {
- パブリックオーバーライドオブジェクト ConvertTo( ITypeDescriptorContextコンテキスト、System.Globalization。CultureInfoカルチャ、
- オブジェクト値 、 タイプ destType)
- {
- if (destType == typeof ( string )&& value is JobTitle)
- {
- JobTitle jobtitle =(JobTitle) value ;
- return jobtitle.FullName;
- }
- return base .ConvertTo(context、culture、 value 、destType);
- }
- }
サンプルのソースコードをダウンロードできます。
- /// <summary>
- ///エンティティの祖先クラス
- /// </ summary>
- パブリッククラス MyItem
- {
- private int iID = -1 ;
- /// <summary>
- ///レコードID
- /// </ summary>
- [説明( "アイテム番号" )、カテゴリ( "コレクション" )、DisplayName( "番号" )]
- パブリックint ID
- {
- get { return iID; }
- {iID = value ; }
- }
- プライベート文字列 sItemName = "" ;
- /// <summary>
- ///名前
- /// </ summary>
- [説明( "アイテム名" )、カテゴリ( "コレクション" )、DisplayName( "名前" )]
- パブリックストリング ItemName
- {
- get { return sItemName; }
- セット {sItemName = value ; }
- }
- /// <summary>
- ///オブジェクトのフルネーム
- /// </ summary>
- [閲覧可能( false )]
- パブリックストリング FullName
- {
- 得る
- {
- return String .Format( "{0} No. {1}" 、ItemName、ID.ToString());
- }
- }
- }
この記事はPropertyGrid FAQに基づいて作成され、それを補完することを目的としています。