Причина, по которой DataBinding не отражает ваши изменения, заключается в том, что вы привязываете простой объект System.String, который не был предназначен для создания событий при изменении.
Итак, у вас есть 2 варианта. Одним из них является повторное связывание значения в событии Click вашей кнопки (пожалуйста, избегайте!). Другой - создать собственный класс, который будет реализовывать INotifyPropertyChanged следующим образом:
public partial class Form1 : Form
{
public Person TheBoss { get; set; }
public Form1()
{
InitializeComponent();
TheBoss = new Person { FirstName = "John" };
textBox1.DataBindings.Add("Text", this, "TheBoss.FirstName");
}
private void button1_Click(object sender, EventArgs e)
{
TheBoss.FirstName = "Mike";
}
public class Person : INotifyPropertyChanged
{
private string firstName;
public string FirstName
{
get
{
return firstName;
}
set
{
firstName = value;
NotifyPropertyChanged("FirstName");
}
}
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}
INotifyPropertyChanged документация: MSDN