Пара разных способов.
Поскольку вы просто делаете ChangesSaved = False
в событии TextChanged
, просто установите его на True
после , вы программно обновите его.
Private Sub loadProperty(ByVal x As Integer)
'// code
RentProrate.Visible = True
ChangesSaved = True
End Sub
Или просто удалите обработчик TextChanged
, обновите TextBox программно, затем добавьте обработчик обратно.
RemoveHandler PropertyDetailsGroup.TextChanged, AddressOf PropertyTextChanged
PropertyDetailsGroup.Text = "value from database"
AddHandler PropertyDetailsGroup.TextChanged, AddressOf PropertyTextChanged
Реализация INotiftyPropertyChanged интерфейс и использование Databinding
было бы другим способом, более чистым на самом деле.Вам не понадобится флаг на уровне формы, вы можете отследить любые изменения, сделанные пользователем на уровне класса, примерно так:
Public Class TestClass
Implements INotifyPropertyChanged
Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Private _IsDirty As Boolean = False
Private _TextValue As String = String.Empty
Private Sub OnPropertyChanged(ByVal propertyName As String)
_IsDirty = True
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
Public ReadOnly Property IsDirty() As Boolean
Get
Return _IsDirty
End Get
End Property
Public Property TextValue() As String
Get
Return _TextValue
End Get
Set(ByVal value As String)
If value <> _TextValue Then
_TextValue = value
OnPropertyChanged("TextValue")
End If
End Set
End Property
End Class