PropertyGridでパブリックプロパティ以外のメンバーを表示することは可能ですか?ドキュメントには、「SelectedObjectのすべてのパブリックプロパティはデフォルトでPropertyGridに表示されます」と記載されています。「デフォルト」は、設定後にフィールドや非公開プロパティなどを表示できる可能性があることを意味しているようです。
私は実際には公共のプロパティ以外のものを表示したくないことに注意してください。私はそれが何をサポートしているかを知る必要があります。
したがって、基本的には、プロパティグリッド内に表示されるものを制御する必要があります。はい、それは可能です。
オブジェクトは、インターフェースを実装することにより、それ自体に関するカスタム情報を提供できますICustomTypeDescriptor
。これが実装されていない場合、静的TypeDescriptor
はプロパティグリッドによって使用されます。
したがって、ICustomTypeDescriptorを実装する必要があります。
プロパティ情報は、インターフェイスメソッドGetProperties()によって返されます。このメソッドは、PropertyDescriptorCollection型のオブジェクトを返します。
編集:より簡単な解決策については、PropertyGrid.BrowsableAttributesを確認する必要があります。PropertyGridのフィールドをプログラムで非表示にする
いくつかの便利なリンク-
.NETの問題:ICustomTypeDescriptor、パート1
http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert