Проблема с заданным связанным свойством в дизайнере в первый раз - PullRequest
0 голосов
/ 28 октября 2009

Я разрабатываю конструктор форм, а также разрабатываю пользовательский элемент управления, который наследуется от стандартного элемента управления, например кнопки.

Кроме того, у меня есть свойство, которое связано, например, пользователь должен сначала выбрать отдел, а затем выбрать человека. и после того, как пользователь выбрал человека, я установил текст моего пользовательского элемента управления (который наследуется от кнопки в данном случае).
Примечание. Пользователь может изменять свойство Text.

Все работает правильно, но когда я загружаю из БД или перетаскиваю элемент управления в конструктор форм, текст набора controlName # set,

После переопределения свойства Text и отладки я вижу, что текст установлен правильно, но после установки моего текста, дизайнер установил текст с controlName #, что это неправильно.

Как решить эту проблему?

Заранее спасибо
Хамид

Ответы [ 2 ]

1 голос
/ 28 октября 2009

Существуют атрибуты, которые вы можете применить к своим свойствам, например ReadOnly, которые не позволят дизайнеру также устанавливать ваши свойства.

Я не могу найти ссылку в данный момент, но есть также способ сообщить конструктору форм, что он должен устанавливать свойства в определенном порядке.


Edit:

Хорошо, не совсем то, что я запомнил, но я думаю что-то вроде интерфейса 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

Таким образом, вся ваша проверка может быть отключена до полной инициализации вашего объекта.

0 голосов
/ 28 октября 2009

Вы можете проверить в своем переопределенном установщике Text, установлен ли он на controlName#, и, если это так, ничего не делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...