DefaultValue для System.Drawing.SystemColors - PullRequest
4 голосов
/ 04 сентября 2008

У меня есть свойство цвета линии в моем пользовательском элементе управления сеткой. Я хочу, чтобы по умолчанию Drawing.SystemColors.InactiveBorder. Я попробовал:

[DefaultValue(typeof(System.Drawing.SystemColors), "InactiveBorder")]
public Color LineColor { get; set; }

Но, похоже, это не работает. Как мне сделать это с атрибутом значения по умолчанию?

Ответы [ 3 ]

11 голосов
/ 04 сентября 2008

Вам нужно изменить первый аргумент с SystemColors на Color.
Похоже, что для типа SystemColors нет преобразователя типа, только для типа Color.

[DefaultValue(typeof(Color),"InactiveBorder")]
4 голосов
/ 04 сентября 2008

Это может помочь: http://support.microsoft.com/kb/311339 - статья в КБ, озаглавленная «Документация MSDN для класса DefaultValueAttribute может сбивать с толку»

2 голосов
/ 04 сентября 2008

Согласно ссылке, опубликованной Мэттом, атрибут DefaultValue не устанавливает значение свойства по умолчанию, он просто позволяет разработчику формы знать, что свойство имеет значение по умолчанию. Если вы изменяете свойство по умолчанию, оно отображается жирным шрифтом в окне свойств.

Вы не можете установить значение по умолчанию, используя автоматические свойства - вам придется сделать это старомодным способом:

class MyClass
{
    Color lineColor = SystemColors.InactiveBorder;

    [DefaultValue(true)]
    public Color LineColor {
        get {
            return lineColor;
        }

        set {
            lineColor = value;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...