title: Changing bound object doesn't update TextBox when focused
body: <p>If I change the databound object of a currently focused TextBox , the TextBox does not display the new value.</p>
  
  <p>Given a simple Form with a button, label, and a text box use the code below. If the user changes the text box value and tabs out of it, the text does not get reset to match the newly bound value (20 in this example). However if I trigger the update via the button click event, the textbox updates fine.  </p>
  
  <p>How can I get the textbox value to display the newly bound value (20) when the property changed event fires here?</p>
  
  <pre><code>using System;
  using System.ComponentModel;
  using System.Windows.Forms;
  
  namespace BindingsUpdate
  {
      public partial class Form1 : Form
      {
          private MyData _data;
          private System.Windows.Forms.BindingSource myDataBindingSource;   
          public Form1()
          {
              InitializeComponent();
              this.components = new System.ComponentModel.Container();
              this.myDataBindingSource = new System.Windows.Forms.BindingSource(this.components);
              this.myDataBindingSource.DataSource = typeof(BindingsUpdate.MyData);
              this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.myDataBindingSource, "Value", true));
              this.label1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.myDataBindingSource, "Value", true));
  
              _data = new MyData () { Value = 10.0};
  
              this.myDataBindingSource.DataSource = _data;
  
              _data.PropertyChanged += Data_PropertyChanged;
          }
  
          private void Data_PropertyChanged (object sender, PropertyChangedEventArgs e)
          {
              RefreshData ();
          }
  
          private void RefreshData ()
          {
              _data.PropertyChanged -= Data_PropertyChanged;
              _data = new MyData () {Value = 20.0};
              this.myDataBindingSource.DataSource = _data;
  
              //these don't seem to do anything..
              this.myDataBindingSource.ResetBindings(false);
              this.myDataBindingSource.ResetCurrentItem();
  
              _data.PropertyChanged += Data_PropertyChanged;
          }
  
          private void button1_Click(object sender, EventArgs e)
          {
              RefreshData ();
          }
      }
  
      public class MyData : INotifyPropertyChanged
      {
          private double _value;
  
          public double Value
          {
              get { return _value; }
              set
              {
                  if (value.Equals(_value)) return;
                  _value = value;
                  OnPropertyChanged("Value");
              }
          }
  
          public event PropertyChangedEventHandler PropertyChanged;
  
          protected virtual void OnPropertyChanged(string propertyName)
          {
              PropertyChangedEventHandler handler = PropertyChanged;
              if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
          }
      }
  }
  </code></pre>