变量/属性在vb.net中更改了事件

Jon*_*an. 3 .net vb.net variables events properties

如何更改变量或属性时引发的事件(或者我可以将我将放入事件的代码放在属性的Set部分中?

Avi*_* P. 11

MSDN库条目INotifyPropertyChanged.PropertyChanged Event:

Public Class DemoCustomer
    Implements INotifyPropertyChanged

    Private customerNameValue As String = String.Empty

    Public Event PropertyChanged As PropertyChangedEventHandler _
        Implements INotifyPropertyChanged.PropertyChanged

    Private Sub NotifyPropertyChanged(ByVal info As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
    End Sub

    Public Property CustomerName() As String
        Get
            Return Me.customerNameValue
        End Get

        Set(ByVal value As String)
            If Not (value = customerNameValue) Then
                Me.customerNameValue = value
                NotifyPropertyChanged("CustomerName")
            End If
        End Set
    End Property
End Class
Run Code Online (Sandbox Code Playgroud)

  • @luchosrock就我个人而言,我认为您缺少手动提出定义的事件的能力。如果您可以让事件自动引发,则可以看到定义事件的意义,否则,只需将代码(或对Sub的调用)放入设置器中即可。 (2认同)

Dav*_*ten 5

是的,这样做的最好方法(如果不是唯一的方法)是完全隐藏实际变量(使其成为私有)并通过Property公开它,该属性在使用setter时触发事件.

我经常这样做,但我发现如果新值与旧值相似,则不要引发事件是很重要的.这既消除了不必要的函数调用,又有时会阻止递归事件.