-1
我試圖在我的BL類中的某個屬性發生更改時更新我的用戶界面。請有人建議最好的方式來做到這一點在vb.net當屬性發生變化時如何更新用戶界面
我試圖在我的BL類中的某個屬性發生更改時更新我的用戶界面。請有人建議最好的方式來做到這一點在vb.net當屬性發生變化時如何更新用戶界面
不是一個真正確切的問題,所以我會解釋標準的方式(在我看來)。
在您的班級中實施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
這讓你更新GUI每當值改變。
感謝您的幫助,我將在未來提供更多的信息,但這是一種享受! – DevPenguin 2014-09-27 20:47:48
請舉例說明什麼是或不正在發生什麼,並描述這是什麼東西:自定義控制?用戶控制?繼承控制? std控制? – Plutonix 2014-09-27 16:57:36
我正在運行一個sql備份並使用SqlInfoMessage來獲取百分比完整的打印消息。此時我更新了我的課程中的一個公共屬性,我希望我的UI中的文本框的值爲。但是,我不確定如何在屬性更改後立即更新UI,而不是從空白文本框跳轉到備份打印消息的完整輸出。 – DevPenguin 2014-09-27 17:06:21
if myTextBox.Text = someTextToShow' does not work then you should share the code;如果它在一些循環中,Windows不會執行每個更新,而是一個進度條。 – Plutonix 2014-09-27 17:28:20