Редактирование свойства объекта внутри объекта в PropertyGrid - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь сделать объект, настраиваемый / редактируемый с помощью таблицы свойств. Все идет хорошо, за исключением объектов внутри объектов.

У меня есть объект / класс с именем "ContactInformation". И внутри этого объекта у меня есть объект с именем "Корреспонденция".

Вот как выглядит эта часть:

[Browsable(false)]
public Correspondence Correspondence
{
    get;
    set;
}
public int CorrespondenceStatus 
{
    get { return this.Correspondence.Status; }
    set { this.Correspondence.Status = CorrespondenceStatus; }
}
public string CorrespondenceComment
{
    get { return this.Correspondence.Comment; }
    set { this.Correspondence.Comment = CorrespondenceComment; }
}
public DateTime CorrespondenceDate
{
    get { return this.Correspondence.LastSend; }
    set { this.Correspondence.LastSend = CorrespondenceDate; }
}

Таким образом, я могу показать свойства / переменные объекта внутри объекта в сетке свойств.

В любом случае, когда я сейчас редактирую значения и нажимаю клавишу ввода или щелкаю где-то еще, вместо того, чтобы сохранить значение, которое я только что набрал, оно возвращается обратно ...

Кто-нибудь понял, почему это происходит? Или, может быть, лучше показать свойства объектов в объектах в таблице свойств?

1 Ответ

4 голосов
/ 17 июня 2011

Чтобы редактировать свойства внутри объекта (это то, что вы видите, например, в редакторе winform с такими свойствами, как Font или Padding, где вы можете «развернуть» объект, щелкнув по значку «плюс»), вы можно использовать класс ExpandableObjectConverter , например:

[TypeConverter(typeof(ExpandableObjectConverter))]
public class Correspondence
{
...
}

и удалить Browsable (false), конечно:

public Correspondence Correspondence
{
    get;
    set;
}
...