質問

TypeDescriptor.CreatePropertyを使用してプロパティグリッドに追加のプロパティを表示するためにタイプにプロパティを追加しようとしていますが、この新しいプロパティは追加されず、そのタイプでTypeDescriptor.GetPropertiesを呼び出してプロパティを検査します、このプロパティは存在しません。

見落としている、または見落としている可能性がありますか?私が覚えている限り、これは基本的で単純なシナリオです。

呼び出しは次のとおりです。 TypeDescriptor.CreateProperty(typeof(MovieMenuItem)、" ExternalMediaLocation&quot ;, typeof(string)、null);

役に立ちましたか?

解決

CreateProperty は、問題の型のリフレクションベースの PropertyDescriptor を返します(たとえば、 AddProperty ではありません)。ここでのシナリオは何ですか? DataGridView に追加データを表示するだけの場合、最も簡単なオプションは、追加の非バインド列をグリッドに追加することです。

実行時に型を 拡張できますが、リストには2つの主なオプションがあります:

  • ITypedList (リストの各インスタンスが異なる列を持つことができる場合)-この回答
  • TypeDescriptionProvider -タイプごとにカスタムプロパティを追加できます(最終的には、最初の例と同様に PropertyDescriptor を記述することになりますが、フックは異なります)

リストベースのメタデータを取得する方法の完全なルールは、この回答にありますa>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top