属性更改时更改控件文本

时间:2018-10-10 10:23:29

标签: vb.net

属性MyLabel.Text更改后,我需要更改标签Path。看下面我的代码。我知道如何从我的课程FrmImport之外进行活动,我可以只订阅PropertyChanged事件,但是我不确定如何从FrmImport类本身进行操作。您可以看到我已经实现INotifyPropertyChanged并创建了OnPropertyChanged,一旦设置了路径OnPropertyChanged("Path")就会调用它。现在,我不敢在FrmImport本身上订阅我的活动,而是我想我只需要做一些事情:MyLabel.DataBindings.Add(??)使它起作用,但现在可以叠加了。有人可以帮忙吗?

Public Class FrmImport
        Implements INotifyPropertyChanged
   Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

        Protected Sub OnPropertyChanged(propName As String)
            If propName IsNot Nothing Then
                RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
            End If
        End Sub

        Private _path As String
        Public Property Path As String
            Get
                Return _path
            End Get
            Set
                _path = Value
                OnPropertyChanged("Path")
            End Set
        End Property


     Private Sub FrmImport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ' ??? MyLabel.DataBindings.Add("Text", Me.Path)
        End Sub

还是我应该像这样不使用INotifyProperty来使用它?:

Public Property Path As String
                Get
                    Return _path
                End Get
                Set
                    _path = Value
                    OnPropertyChanged("Path")
                    MyLabel.Text= Me.Path
                End Set
            End Property

1 个答案:

答案 0 :(得分:0)

当数据存储在表单外部时,我通常会进行绑定。例如,如果您有一个PathInformation类,其中包含一堆需要显示的属性。该类需要有一些地方来告知它已更新的表单,并告诉类要自我更新。

当变量直接位于表单中时,实际上并不需要绑定。只需直接更新路径即可。不需要OnPropertyChanged,因为表单之外的任何东西都不需要知道更改(因为它们已经调用了Path属性)。

但这只是边缘观点,还取决于其余代码。