【发布时间】:2019-06-29 15:41:10
【问题描述】:
我在一个 Windows 窗体上有几个绑定控件,它们链接到另一个类的属性。当任何一个控件的值发生变化时,所有绑定属性的 Getter 都会被访问。
类代码:
Public Class Student
Private _Name As String
Public Property Name As String
Get
Return _Name
End Get
Set(value As String)
_Name = value
End Set
End Property
Private _Grade As String
Public Property Grade As String
Get
Return _Grade
End Get
Set(value As String)
_Grade= value
End Set
End Property
Private _Age As Integer
Public Property Age As Integer
Get
Return _Age
End Get
Set(value As Integer)
_Age = value
End Set
End Property
End Class
表格代码:
Public Class Main
Public ThisStudent As New Student
Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Name_TextBox.DataBindings.Add("Text", Me.ThisStudent, "Name")
Me.Grade_TextBox.DataBindings.Add("Text", Me.ThisStudent, "Grade")
Me.Age_TextBox.DataBindings.Add("Text", Me.ThisStudent, "Age")
End Sub
End Class
当我仅在“姓名”texbox 中键入时,姓名、等级和年龄的 Getter 都被访问(实际上我什至不确定为什么要为“姓名”本身访问 Getter,因为它应该只是设置名称)。在我的实际用例中,Getter 进行了一些额外的验证,这使得每当控件值更改时数据绑定非常慢,然后它会检查 30 多个其他不相关但绑定到完全不同控件的属性的 Getter。
有没有办法让我将多个控件数据绑定到同一个对象中的属性,但只访问实际绑定到该特定控件的属性?
【问题讨论】:
-
另一种方法:在 getter 中不做任何“额外”操作,只返回值。如果您想做一些验证,请在方法中进行并从对应的控件事件中调用它。
标签: .net vb.net winforms data-binding