.net 在忽略数据绑定的同时检测textbox上更改的文本

.net 在忽略数据绑定的同时检测textbox上更改的文本,.net,vb.net,winforms,data-binding,.net-2.0,.net,Vb.net,Winforms,Data Binding,.net 2.0,我将一些文本框绑定到bindingsource和bindingnavigator 我想检测这些值何时发生了变化,并提示用户如果想要更新,就进行confrim 当表单第一次初始化,然后绑定导航器移动到下一条记录时,text_changed事件会在textbox上触发,在这里我有一个布尔值来确定是否发生了更改 是否有一种方法可以仅在发生有效数据更改时设置我的布尔值,或者有一种更好的方法可以检测是否发生了更改通常,这样做的方法是注意文本框的backing属性何时发生了更改 因此,不必检查UI事件,您可

我将一些文本框绑定到bindingsource和bindingnavigator

我想检测这些值何时发生了变化,并提示用户如果想要更新,就进行confrim

当表单第一次初始化,然后绑定导航器移动到下一条记录时,text_changed事件会在textbox上触发,在这里我有一个布尔值来确定是否发生了更改


是否有一种方法可以仅在发生有效数据更改时设置我的布尔值,或者有一种更好的方法可以检测是否发生了更改

通常,这样做的方法是注意文本框的backing属性何时发生了更改

因此,不必检查UI事件,您可以执行以下操作

Public Class myClass
   private _myString As String = ""
   private _isDirty As Boolean
   Public Property MyString(ByVal _newString As String) As String
    Get
        Return _myStrig
    End Get
    Set
         If Not _newString.Equals(_myString) Then
              _myString = _newString
              _isDirty = true
         End If
    End Set
  End Property
  'You could also just put a property on IsDirty and check that
  Public Sub CanSave()
     Return _isDirty
  End Sub
End Class
基本上,在设置一个值之前,先验证该值是否已更改,然后在需要检查对象是否为irty时,只需检查_isDirty字段即可

您还可以使用
INotifyPropertyChanged