Отображение описания объекта в PropertyGrid - PullRequest
1 голос
/ 04 августа 2011

Я количество объектов, которые я хотел бы отобразить в сетке свойств, поскольку они выбраны пользователем.Я знаю, что описания свойств могут быть установлены в каждом классе объектов, однако я требую, чтобы описания различались в разных экземплярах одного и того же объекта.

Есть ли способ задать описание для всего объекта при запуске?время, которое отображается независимо от того, какое свойство выбрано в сетке свойств?

Например, если у меня был следующий класс

public class Person
{
    public String Name { get; set; }
    public String Age { get; set; }

    public Person(String n, int a)
    {
        this.Name = n;
        this.age = a;
    }

    public Person()
    {

    }
}

, и я создал объект Person следующим образом

Person Frank = new Person(Frank, 22);

и отображал этот объект в сетке свойств примерно так:

propertyGrid1.SelectedObject = Frank;

Мне бы хотелось иметь возможность предоставить описание для всего объекта, а не атрибуты name и age класса Person,И, поскольку я хочу, чтобы описание относилось, в частности, к объекту Фрэнка, я хотел бы иметь возможность задавать это описание не только в зависимости от того, какой тип объекта выбран, но и от конкретного экземпляра этого объекта.Это возможно?

Ответы [ 2 ]

1 голос
/ 04 августа 2011

PropertyGrid показывает только описания свойств, а не объекта.Тем не менее, вы можете реализовать ICustomTypeDescriptor для вашего объекта и переопределить методы GetProperties.Там вы можете добавить пользовательский DescriptionAttribute .

Более подробное руководство по этому интерфейсу можно найти здесь и здесь .

0 голосов
/ 04 августа 2011

CodeNaked как правильный ответ. В PropertyGrid имеет смысл отображать описание только для выбранного в данный момент свойства, а не для всего экземпляра. Какая будет выгода? Если вам действительно нужно отобразить сообщение на основе целевого экземпляра, почему бы не создать метку сверху или снизу сетки? Его содержимое может быть основано на вашем собственном атрибуте или на вашем собственном DescriptionProvider ...

...