title: Setting a textchanged event to only fire when text is actually entered by user not program
body: <p>Windows forms Application. VB .NET 4.0 In my application I have a global boolean variable that  keeps track of when changes are made and when they are saved called changesSaved. On closing even it checks the value of this variable before closing the window.. I am using textchanged event to automatically change the value of changesSaved to FALSE when text is changed.. Problem: The group box items are being populated dynamically so the user can edit the values or simply just view them. This dynamic population is causing the textchanged event to fire because the program is changing the text value of the box to put the values in that are stored in the database. The textchanged event should not fire unless the user him or herself enters a value or values in the text boxes.. Is there a way to specify the source i guess you could say for the text changed event or another way so that it will only fire when the user inputs information.??? Functions are as follows: The first is called by the load event to place the values in the box... The next one is the one that is being called as a result of the first one and is also the one that is causing the problems..</p>
  
  <pre><code>Private Sub loadProperty(ByVal x As Integer)
      Dim _property As property_info = db.property_info.Single(Function(s) s.idProperties = x)
      p_settingsCity.Text = _property.city.ToString
      p_settingsState.Text = _property.state.ToString
      p_settings_PropertyName.Text = _property.property_Name.ToString
      p_settingsZipCode.Text = _property.zipcode.ToString
      p_settings_Address.Text = _property.address1.ToString
      p_settingsCity.Text = _property.city.ToString
      p_settingsState.Text = _property.state.ToString
          If _property.AllowRentProration = 1 Then
            RentProrate.Checked = True
          Else
            RentProrate.Checked = False
          End If
      RentProrate.Visible = True
  End Sub
  
  
  Private Sub PropertyTextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PropertyDetailsGroup.TextChanged
      ChangesSaved = False
  End Sub   
  </code></pre>