Здравствуйте, barcik, Вы писали:
B>Пишу CustomControl.
B>Проблема в том, что DefaultValue для свойства не устанавливается, вместо ожидаемого B>ArrowDirectionType.None получаю ArrowDirectionType.Left
И не должен. Надо самому присваивать значение по-умолчанию, например, в конструкторе. Аттрибут лишь для дизайнеров и для сравнения — является ли текущее значение значением по-умолчанию. Так же значение по-умолчанию нужно самому выставлять в методе ShouldSerializePropertyName, если такой метод используется.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, barcik, Вы писали:
B>Проблема в том, что DefaultValue для свойства не устанавливается, вместо ожидаемого B>ArrowDirectionType.None получаю ArrowDirectionType.Left
B>Help. B>Заранее спасибо.
Code generators can use the default values also to determine whether code should be generated for the member.
Это означает, что если значение DirectionType было выставлено в ArrowDirectionType.None, то дизайнер не будет генерить код для DirectionType.
Здравствуйте, barcik, Вы писали:
B>Всем привет. B>Пишу CustomControl.
B>
B>[DefaultValue(ArrowDirectionType.None)]
B> public ArrowDirectionType DirectionType
B> {
B> get { return _direction; }
B> set { _direction = value; }
B> }
B> public enum ArrowDirectionType
B> {
B> Left,
B> Right,
B> None
B> }
B>private ArrowDirectionType _direction;
B>
B>Проблема в том, что DefaultValue для свойства не устанавливается, вместо ожидаемого B>ArrowDirectionType.None получаю ArrowDirectionType.Left
B>Help. B>Заранее спасибо.
Инициализирующее значение надо задавать самому, DefaultValueAttribute указывает дизайнеру в каком случае нужно сериализовывать свойство, если в пропертигриде задано значение отличное от дефолтного, в файле *.designer.cs появится строчка типа myControl1.ArrowDirectionType = ???, иначе ее просто не будет. А у вас видимо (int)ArrowDirectionType.Left == 0.
Здравствуйте, barcik, Вы писали:
B>Проблема в том, что DefaultValue для свойства не устанавливается, вместо ожидаемого B>ArrowDirectionType.None получаю ArrowDirectionType.Left
По правильному надо None ставить в начало. Enum'ы это по сути типизированные int'ы, так что первому элементу из перечисления по умолчанию присваивается 0. Поэтому рекомендуется значения, соответствующие логическому нулю, ставить на первое место — это, кстати, должно и проблему решить