title: why GetChanges returns something (when bound to a property) even if there are no changes on datatable?
body: <p>Bound <code>GetChanges</code> always returns something when bound to a <code>UserControl</code>'s property (even on a simple one)</p>
  
  <p>I have made a <code>UserControl</code>, for some reason unbeknownst to me, when I bound a <code>DataColumn</code> to my control's property the <code>dataSet1.GetChanges()</code> always return something, even the column bound to my control was not changed.</p>
  
  <p>What's the possible cause why <code>GetChanges</code> always return something?</p>
  
  <p>Here's a simple snippet to reproduce the binding/GetChanges problem:</p>
  
  <hr>
  
  <pre><code>using System;
  
  using System.Data;
  
  using System.Windows.Forms;
  
  
  namespace BindingBug
  {
  
      public partial class Form1 : Form
      {
  
          DataSet _ds = new DataSet();
  
          void GetData()
          {           
              var t = new DataTable
              {
                  TableName = "beatles",
                  Columns =
                  {
                      {"lastname", typeof(string)},
                      {"firstname", typeof(string)},
                      {"middlename", typeof(string)}
                  }
              };
  
  
              t.Rows.Add("Lennon", "John", "Winston");
              t.Rows.Add("McCartney", "James", "Paul");
  
              _ds.Tables.Add(t);            
          }
  
          public string Hey { set; get; }
  
          public Form1()
          {
              InitializeComponent();
  
              var tLastname = new TextBox { Top = 100 };
              var tFirstname = new TextBox { Top = 130 };
  
              this.Controls.Add(tLastname);
              this.Controls.Add(tFirstname);
  
              GetData();
  
  
              tLastname.DataBindings.Add("Text", _ds.Tables["beatles"], "lastname");
              tFirstname.DataBindings.Add("Text", _ds.Tables["beatles"], "firstname");
  
              // if the following line is commented 2nd:Has Changes == false
              this.DataBindings.Add("Hey", _ds.Tables["beatles"], "middlename");
  
  
              _ds.AcceptChanges();
  
  
              MessageBox.Show("1st:Has Changes = " + _ds.HasChanges().ToString()); 
  
              var bDetectChanges = new Button { Top = 160, Text = "Detect Changes" };
              bDetectChanges.Click += 
                  delegate 
                  {
                      this.BindingContext[_ds.Tables["beatles"]].EndCurrentEdit();
                      MessageBox.Show("2nd:Has Changes = " +  (_ds.GetChanges() != null).ToString()); 
                  };
  
              this.Controls.Add(bDetectChanges);
  
          }    
      }
  } //namespace BindingBug
  </code></pre>