2012-05-10 3 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 объекты действительно имеют одинаковые значения для а и б, я вижу только то, как это в PropertyGrid:

… 
MyNestedClassObject | 
    A    | 1 
    B    | 2 
… 

Я знаю, что PropertyGrid разработан, чтобы показать только общие свойства нескольких объектов, что верно для субсвойства а и Ь. Но почему так называемая «typeconverter» (или родительская) линия расширяемых свойств имеет пустую часть значения, хотя под-свойства a и b одинаковы для всех объектов?

Может кто-нибудь пролить свет на это и/или может помочь мне по этой проблеме?

Большое спасибо заранее

Jochen

ответ

0

После дополнительных исследований по этому вопросу, я нашел решение благодаря другой StackOverflow статье:

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

Автор имел такой же вопрос с возможностью расширения свойства при выборе нескольких объектов, где все свойства являются общими для всех экземпляров. Линия «typeconverter» (или родительская) осталась пустой, с другой стороны, отображаются под-свойства.

Он заметил, что переопределяет метод Equals в классе, экземпляры которого отображаются в сетке свойств. И да, все.

Большое спасибо greggorob64!

с уважением

+0

Это действительно смешно. Я искал очень похожий вопрос и нашел ваш ответ, который напрямую связан с моим вопросом: P – greggorob64

Смежные вопросы