2014-09-27 3 views
-1

Я пытаюсь обновить свой интерфейс, когда изменяется свойство в моем классе BL. Пожалуйста, можете кто-нибудь посоветовать лучший способ сделать это в vb.net.Как обновить интерфейс при изменении свойства

+0

, пожалуйста, покажите пример того, что происходит или не происходит, и опишите, что это за вещи: пользовательский контроль? пользовательский контроль? унаследованный контроль? std контроль? – Plutonix

+0

Я запускаю резервную копию sql и используя SqlInfoMessage, чтобы получить процентные сообщения полной печати. На этом этапе я обновляю общедоступное свойство в своем классе, чтобы мне было нужно значение текстового поля в моем пользовательском интерфейсе. Однако я не уверен, как обновить свой интерфейс, как только свойство изменится, а не перейдет из пустого текстового поля в полный вывод резервных печатных сообщений. – DevPenguin

+0

если 'myTextBox.Text = someTextToShow' не работает, тогда вы должны поделиться этим кодом; если он находится в каком-то контуре, Windows не будет выполнять каждое обновление и скорее является индикатором выполнения. – Plutonix

ответ

0

Не совсем точный вопрос, поэтому я объясню стандартный способ (на мой взгляд).

Внесите флаг INotifyPropertyChanged в свой класс и обработайте событие PropertyChanged вашего объекта.

Сначала класс объекта, который содержит свойство в вопросе:

Public Class MySweetClass 
    Implements System.ComponentModel.INotifyPropertyChanged 

    Private _MyProperty As String 
    Public Property MyProperty As String 
     Get 
      Return _MyProperty 
     End Get 
     Set(value As String) 
      _MyProperty = value 
      RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("MyProperty")) 
     End Set 
    End Property 

    Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged 
End Class 

Обратите внимание, что PropertyChanged событие возникает, как только значение изменений свойств.

В вашей форме обрабатывать это событие:

Public Class Form1 
    Private WithEvents MySweetObject As MySweetClass 

    Private Sub MySweetObject_PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Handles MySweetObject.PropertyChanged 
     'Update gui here 
    End Sub 
End Class 

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

+0

Спасибо за помощь, я предоставлю больше информации в будущем, но это работает! – DevPenguin

Смежные вопросы