16,554
社区成员
发帖
与我相关
我的任务
分享
Dim 数据 As New List(Of CData)
'或
Dim 数据(1) As CData
'改变 数据(0).Data的值 不能同步
Imports System.ComponentModel
Public Class Form1
Dim 数据() As CData = {New CData}
WithEvents MyTB As New MyTextBox
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyTB.Location = New Point(148, 7)
TextBox2.Location = MyTB.Location + New Point(0, MyTB.Height + MyTB.Margin.Bottom)
Controls.Add(MyTB)
MyTB.DataBindings.Add("MyText", 数据, "Data", False, DataSourceUpdateMode.OnPropertyChanged)
End Sub
Private Sub MyTB_TextChanged(sender As Object, e As EventArgs) Handles MyTB.TextChanged
MyTB.MyText = MyTB.Text
Text = $"数据为: {数据(0).Data} MyText为: {MyTB.MyText}"
'当为数组时更改 属性值 可同步 数据
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
数据(0).Data = TextBox2.Text
Text = $"数据为: {数据(0).Data} MyText为: {MyTB.MyText}"
'当为数组时更改 数据 无法同步 属性值
End Sub
End Class
Public Class MyTextBox
Inherits TextBox
Implements INotifyPropertyChanged
Private _MyText As String
Public Property MyText() As String
Get
Return _MyText
End Get
Set(ByVal value As String)
_MyText = value
NotifyPropertyChanged("MyText")
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(ByVal propertyName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
End Class
Public Class CData
Implements INotifyPropertyChanged
Private _Data As String
Public Property Data() As String
Get
Return _Data
End Get
Set(ByVal value As String)
_Data = value
NotifyPropertyChanged("Data")
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(ByVal propertyName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
End Class