2012-05-10 55 views
1

我有PropertyGrid中未顯示的可膨脹特性對多個對象的父值的一個問題(採用propertygrid.SelectedObjects)PropertyGrid中顯示共同屬性對多個對象

[Browsable(true), TypeConverter(typeof(ExpandableObjectConverter))] 
public class MyNestedClass { 
    private int a; 
    private int b; 

    [Browsable(true), 
    ReadOnly(false), 
    RefreshProperties(RefreshProperties.Repaint), 
    NotifyParentProperty(true)] 
    public int A { 
     get { return this.a; } 
     set { this.a = value; } 
    } 

    [Browsable(true), 
    ReadOnly(false), 
    RefreshProperties(RefreshProperties.Repaint), 
    NotifyParentProperty(true)] 
    public int B { 
     get { return this.b; } 
     set { this.b = value; } 
    } 


    public MyNestedClass(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 


    public override string ToString() { 
     return this.a.ToString() + 「; 「 + this.b.ToString(); 
    } 
} 

這個類是另一個類MyClass的的一部分, myNestedClass被定義爲一個可瀏覽的屬性。

public class MyClass { 
    … 
    private MyNestedClass myNestedClassObject; 
    … 
    [Browsable(true), 
    ReadOnly(false), 
    MergableProperty(true), 
    RefreshProperties(RefreshProperties.Repaint)] 
    public MyNestedClass MyNestedClassObject { 
     get { return myNestedClassObject; } 
     set { myNestedClassObject = value; } 
    } 
    … 
} 

當propertyGrid中只顯示類myClass的一個實例時,一切工作正常。 PropertyGrid中示出了:

… 
MyNestedClassObject | 1; 2 
    A    | 1 
    B    | 2 
… 

在這種情況下,我試圖顯示MyClass的實例的數組(通過propertygrid.SelectedObjects),其中myNestedClass對象做有A和B的值相同,我只看到的東西這樣PropertyGrid中:

… 
MyNestedClassObject | 
    A    | 1 
    B    | 2 
… 

我知道的PropertyGrid旨在顯示多個對象的唯一共同的屬性,什麼是對的子屬性a和b如此。但是爲什麼可擴展屬性的所謂「typeconverter」(或父)行確實有一個空值部分,儘管子屬性a和b對於所有對象都是相同的?

任何人都可以對此有所瞭解和/或可以幫助我解決這個問題嗎?

提前感謝

約亨

回答

0

對這一問題進行更多的研究後,我找到了解決辦法要歸功於另一個計算器文章:

PropertyGrid mult. controls select, null exception on property set?

筆者有同樣的問題與擴張當所有屬性對所有實例都通用時選擇多個對象時的屬性。 「typeconverter」(或父母)線保持空白,另一方面顯示子屬性。

他注意到覆蓋方法等於其實例顯示在屬性網格中的類。 是的,就是這樣。

非常感謝greggorob64!

親切的問候

+0

這真的很有趣。我在Google上搜索了一個非常類似的問題,並發現你的反應直接與我的問題聯繫在一起:P – greggorob64