16,553
社区成员
发帖
与我相关
我的任务
分享
Public Class Form1
Class BindingData
Property A As String
End Class
Dim BindingDataNew As New BindingData
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BindingDataNew.A= 10
TextBox1.DataBindings.Add("Text", BindingDataNew, "A", False, DataSourceUpdateMode.OnPropertyChanged)
'BindingDataNew.BindingData = 10 '加在下面运行时不能同步显示
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BindingDataNew.A = 999
MsgBox(BindingDataNew.A & "-----------" & TextBox1.Text)
'结果为 999-----------空
End Sub
End Class
'NotifyPropertyChanged("MyText")
'它不小心被我注解了,使用它就OK了.
Private Sub MyTB_TextChanged(sender As Object, e As EventArgs) Handles MyTB.TextChanged
'========Sorry少加了这句========
MyTB.MyText = MyTB.Text
'========Sorry少加了这句========
Text = $"数据为: {数据.Data} MyText为: {MyTB.MyText}"
End Sub
但还是一样MyText改变不能同步Data
Imports System.ComponentModel
Public Class Form1
Dim 数据 As New CData
WithEvents MyTB As New MyTextBox
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyTB.Location = New Point(100, 100)
Controls.Add(MyTB)
MyTB.DataBindings.Add(New Binding("MyText", 数据, "Data", False, DataSourceUpdateMode.OnPropertyChanged))
End Sub
Private Sub MyTB_TextChanged(sender As Object, e As EventArgs) Handles MyTB.TextChanged
Text = $"数据为: {数据.Data} MyText为: {MyTB.MyText}"
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
数据.Data = TextBox2.Text
Text = $"数据为: {数据.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
那为什么自定义添加的属性就不能同步呢!
是我哪里搞错了吗?
改数据能同步文本
改文本这样的代码就不能同步数据!
textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", 对象, "FirstName", false, DataSourceUpdateMode.OnPropertyChanged));