2015-11-11 5 views
1

У меня есть пользовательский класс, который основан на TreeNode, и на нем есть свойство Enum, называемое статусом, как показано ниже.Вызов sub на изменение свойства класса?

Public _staus As enumStatus 

Public Enum enumStatus 
    None 
    Yes 
    No 
End Enum 

В принципе, когда я изменить это свойство, я хочу, чтобы вызвать подпрограмму, которая просто меняет цвет текста пункта - этот подпункт содержится в классе и просто выберите саз обновления свойства Me.ForeColor ,

Это работает правильно, если я классифицирую myClass.ChangeColourBasedOnStatus, но как я могу сделать это автоматически, когда это свойство изменяется.

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

Любые советы приветствуются. :)

+0

'_staus' (sic) - фактически поле, а не' Свойство'. Я бы добавил событие StatusChanged, и пусть что-то (возможно, форма) отреагирует на него. Поднимите событие в настройщике свойств – Plutonix

+0

Привет, я думал, что что-то подобное пришло, можете ли вы объяснить, как мне это сделать? –

+0

[События в VB] (https://msdn.microsoft.com/en-us/library/ms172877.aspx) – Plutonix

ответ

0

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

Private _staus As enumStatus 

Public Enum enumStatus 
    None 
    Yes 
    No 
End Enum 

Public Property Status As enumStatus 
    Get 
     Return _staus 
    End Get 
    Set(value As enumStatus) 
     _staus = value 
     ChangeColor(TextBox1.Text) 
    End Set 
End Property 

Private Sub ChangeColor(SomeText As String) 
    Select Case SomeText 
     Case "" : Me.ForeColor = Color.Black 
     Case "Stop" : Me.ForeColor = Color.Red 
     Case "Go" : Me.ForeColor = Color.Green 
    End Select 
End Sub 
Смежные вопросы