繁体   English   中英

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

[英]variable/property changed event in vb.net

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

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

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

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

规范事件是PropertyChanged事件,它在INotifyPropertyChanged接口中定义。 你可以从你的财产制定者那里提出这个问题。 (请注意,VB.NET不会为您引发事件:您必须包含代码才能引发它。)

如果您希望在更改上运行的代码在逻辑上属于您的类(例如,在余额更改时更新客户状态),则将其放在属性设置器中而不是在事件处理程序中是合适的。 事件处理程序用于外部代码需要了解更改时,例如更新UI以响应客户状态更改。

看一下INotifyPropertyChanged接口的这个示例实现,这是用于此功能的标准方法。 重要的部分是NotifyPropertyChanged方法和属性集处理程序中的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM