2

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

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

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

4

1 に答える 1

3

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

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

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

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

于 2009-06-16T11:22:48.657 に答える