Проблема с заданным связанным свойством в конструкторе в первый раз
-
08-07-2019 - |
Вопрос
Я разрабатываю конструктор форм, а также разрабатываю некоторые пользовательские элементы управления, которые наследуются от стандартного элемента управления, например button.
Кроме того, у меня есть некоторое связанное свойство, например, пользователь должен сначала выбрать отдел, а затем выбрать персону.и после того, как пользователь выбирает person, я устанавливаю текст моего пользовательского элемента управления (который в данном случае наследуется от button).
Примечание:пользователь может изменить свойство Text.
Все работает правильно, но когда я загружаю элемент управления из базы данных или перетаскиваю его в конструктор форм, текст ControlName # устанавливается,
После переопределения свойства Text и его отладки я вижу, что текст установлен правильно, но после установки моего текста дизайнер установил text с ControlName #, что это неправильно.
Как решить эту проблему ?
Заранее благодарю
Хамид
Решение
Существуют атрибуты, которые вы можете применить к своим свойствам, такие как ReadOnly
это также помешает дизайнеру настроить ваше свойство.
На данный момент я не могу найти ссылку, но есть также способ сообщить разработчику форм, что он должен устанавливать свойства в определенном порядке.
Редактировать:
Ладно, не совсем таким, каким я его запомнил, но я думаю, что что-то вроде ISupportInitialize (Поддержка инициализации) интерфейс.
Что -то вроде:
Public Class Test
Implements ISupportInitalise
private _numberOne as integer
private _numberTwo as integer
private _initalised as boolean
Public Property NumberOne() as Integer
Get
return _numberOne
End Get
Set(value as Integer)
if _initalised then
'perform checks here'
end if
_numberOne = value
End Set
End Property
Public Property NumberTwo() as Integer
Get
return _numberTwo
End Get
Set(value as IntegeR)
if _initalised then
'perform checks here'
end if
_numberTwo = value
End Set
End Property
Public Sub BeginInit Implements ISupportInitalise.BeginInit
_initalised = false
End Sub
Public Sub EndInit Implements ISupportInitalise.EndInit
_initalised = true
'perform all checks here'
End Sub
End Class
Таким образом, вся ваша проверка может быть отключена до тех пор, пока ваш объект не будет полностью инициализирован.
Другие советы
Вы можете проверить в своем переопределенном установщике Text
, установлен ли он на controlName #
, и, если это так, ничего не делать.