У меня есть компонент Extender IExtenderProvider, который расширяет TextBox, чтобы иметь «выбранный цвет». Значением по умолчанию для этого цвета является «подсветка». Пользователь может изменить «выбранный по умолчанию цвет» в сетке свойств расширителя. Если расширенный TextBox не определил «выбранный цвет», он будет использовать указанное значение «удаленный цвет по умолчанию».
Если программист изменил «выбранный цвет» TextBox, я хочу предоставить команду «сброс» в сетке свойств, которая сбрасывает «выбранный цвет» на «выбранный цвет по умолчанию», как определено в компоненте расширителя.
Как добавить команду «сброс» в значение сетки свойств расширенного элемента управления, а затем «сбросить» это расширенное свойство до значения по умолчанию, предоставленного расширителем?
Я хочу позволить пользователю щелкнуть правой кнопкой мыши расширенное свойство и выбрать Сброс , чтобы восстановить его свойство значение по умолчанию, определенное в расширителе.
(См. Определение значений по умолчанию с использованием методов ShouldSerialize и Reset при http://msdn.microsoft.com/en-us/library/53b8022e.aspx)
Очевидно, это не сработает.
Public Sub ResetGetMyProperty()
MyProperty = "Hello World!"
End Sub
И я не могу использовать следующее, потому что это для «сброса» свойства Extender.
Public Sub ResetMyProperty()
MyProperty = "Hello World!"
End Sub
Я не могу использовать DefaultValue
, как показано ниже, потому что это требует константы, а это не так, потому что программист может изменить значение по умолчанию.
<DefaultValue("Hello World!")> _
Public Sub GetMyProperty(control As Control) As String
Return _extendees(control).MyProperty
End Sub
Мне нужно что-то вроде <DefaultValue(Me.Property)>
, потому что Me.Property - это значение, указанное программистом через сетку свойств. (Что я не могу сделать, потому что Me.Property
не является константой.)
[уточнение]
Сам расширитель имеет свойства. Это значения по умолчанию для любого расширенного элемента управления. Если программист не указывает значение «переопределить» для определенного расширенного элемента управления, будет использоваться значение по умолчанию. Я, как автор расширителя, по умолчанию задаю конкретное значение, например «выделение», но вы, пользователь моего расширителя, хотите по умолчанию «красный», вам придется изменить свойство расширителя. Теперь любые расширенные элементы управления, которые не определяют это расширенное свойство, будут использовать «красный». Тем не менее, любой элемент управления, который указал значение ... не может "сбросить" до этого "красного". DefaultValue не применяется. (В настоящее время единственный способ установить значение по умолчанию - удалить код из конструктора.)
Есть предложения?
Обратите внимание, что я не использую Color в фрагментах кода выше, потому что это мешает тому, что я пытаюсь проиллюстрировать.