2016-01-19 6 views
0

Я использую C# Windows Forms управления библиотекой программы, чтобы создать свой собственный контроль, код следующим образом:C# DefaultValue атрибут не работает

public partial class MyControl : UserControl 
    { 
     public MyControl() 
     { 
      InitializeComponent(); 
     } 

     private float mMinValue; 

     [Browsable(true)] 
     [EditorBrowsable(EditorBrowsableState.Always)] 
     [Category("Design") , DefaultValue(0.0)] 
     public float MinValue 
     { 
      get { return mMinValue; } 
      set { mMinValue = value; } 
     } 

     private float mMaxValue; 

     [Browsable(true)] 
     [EditorBrowsable(EditorBrowsableState.Always)] 
     [Category("Design") , DefaultValue(1.0)] 
     public float MaxValue 
     { 
      get { return mMaxValue; } 
      set { mMaxValue = value; } 
     } 
    } 

При запуске программы по умолчанию значение MinValue и MaxValue оба являются 0, так как правильно установить значение по умолчанию?

+1

частный плавающий mMinValue = 50; и private float mMaxValue = 50; –

ответ

2

Атрибут значения по умолчанию указывает только конструктору, что является значением по умолчанию для свойства. Он не устанавливает его как фактическое значение элемента за свойством. Об этом также упоминается на MSDN page for the default value attribute:
(в раздел примечаний)

Примечание
DefaultValueAttribute не причинит член будет автоматически инициализируется со значением атрибута. Вы должны установить начальное значение в своем коде.

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

1
public partial class MyControl : UserControl 
{ 
    //Declare your variables here 
    private float mMinValue = 0.0; 
    private float mMaxValue = 1.0; 

    //Leave it 
    public MyControl() 
    { 
     InitializeComponent(); 
    } 
} 
+0

Пожалуйста, добавьте описание в свой ответ, чтобы каждый мог его получить. – Hamad

1

Если я правильно Вас понял вы пытаетесь использовать DefaultValueAttribute, цитата:

DefaultValueAttribute не причинит член будет автоматически инициализируется value.You атрибута необходимо установить начальное значение в коде ,

Чтобы установить значение по умолчанию, вы должны использовать конструктор.

public MyControl() 
{ 
    MinValue = 0; 
    MaxValue = 100; 
    InitializeComponent(); 
}