■68806 / inTopicNo.1) |
プロパティの表示非表示の切り替えについて |
□投稿者/ むぅ (4回)-(2013/11/18(Mon) 10:44:21)
|
分類:[.NET 全般]
2013/11/18(Mon) 10:49:39 編集(投稿者)
VS2010 .NET3.5 C# Windows7
お世話になります。 PropertyGridにオブジェクトのプロパティを表示するとき、ある条件によって 特定項目のプロパティを表示したり非表示にしたり切り替えたいです。
以下のサイトに実現したいことが記載されているのですが、躓いています。
PropertyウィンドウまたはPropertyGridの表示内容の動的変更 http://social.msdn.microsoft.com/Forums/ja-JP/044671d1-bab3-40fe-8451-6d2f32dd88a8/propertypropertygrid?forum=vsgeneralja
<実装内容> public class PropertyDisplayConverter : TypeConverter { public PropertyDisplayConverter() { }
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object instance, Attribute[] filters) { PropertyDescriptorCollection properies = TypeDescriptor.GetProperties(instance, filters, false); if(true) //←表示を切り替える為の条件。テストなのでtrueにしています。 { PropertyDescriptorCollection nonBrowsableProperties = TypeDescriptor.GetProperties(instance, new Attribute[] { BrowsableAttribute.No }); PropertyDescriptor ds = nonBrowsableProperties.Find("viewrecordkeyname", false); if(ds!=null) properies.Add(ds); //←ここでNotSupportedException 例外がでます。 } //プロパティ表示名称を日本語に変換する処理 PropertyDescriptorCollection collection = new PropertyDescriptorCollection(null); foreach (PropertyDescriptor desc in properies) { collection.Add(new PropertyDisplayPropertyDescriptor(desc)); } return collection; }
public override bool GetPropertiesSupported(ITypeDescriptorContext context) { return true; } }
参考サイトのほうでも >coll.Add(pd) でbreakさせて、coll.readOnlyを確認するとtrueです。 >ILで確認しましたが readOnly が true だと NotSupportedException を発生します。 と記載されていますが、具体的にどうすればいいのかが分からず、困っています。 どちら様かご教示いただけないでしょうか。
よろしくお願いします。
|
|