2008-09-04 2 views
3

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

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

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

ответ

4

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

9

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

[DefaultValue(typeof(Color),"InactiveBorder")] 
2

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

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

class MyClass 
{ 
    Color lineColor = SystemColors.InactiveBorder; 

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

     set { 
      lineColor = value; 
     } 
    } 
} 
+2

Если один должен был нажать правой кнопкой мыши на атрибуте в окне свойств при проектировании время и выберите команду _Reset_, появится ошибка, указывающая, что `bool` не может быть преобразован в` Цвет`. Решение @aku будет работать. – Pooven 2012-05-15 08:42:47

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