//Мне кажется, лучше всего про Binding написано в MSDN
//(а вот по-русски даже не знаю)
// вот пример
//ЕСТЬ типизированный DataSet ds,
//DataAdaper da (запрос "SELECT CompanyName FROM Customers" БАЗА ДАННЫХ Notrhwind ),
//TextBox txt, DataGrid grd;
CurrencyManager cm,cm1;
private void Form1_Load(object sender, System.EventArgs e)
{
//НАПОЛНЯЕМ DATASET ИЗ БАЗЫ ДАННЫХ
this.da.Fill(this.ds);
//СВЯЗЫВАЕМ TEXTBOX НА ГЛАВНОЙ ФОРМЕ
txt.DataBindings.Add("Text",this.ds.Customers,"CompanyName");
//СВЯЗЫВАЕМ DATAGRID НА ГЛАВНОЙ ФОРМЕ
this.grd.DataSource=this.ds.Customers;
//СОЗДАЕМ ДРУГУЮ ФОРМУ
Form frm=new Form();
//СОЗДАЕМ НА ДРУГОЙ ФОРМЕ TEXTBOX И СВЯЗЫВАЕМ ЕГО
TextBox txt1=new TextBox();
txt1.DataBindings.Add("Text",this.ds.Customers,"CompanyName");
txt1.Parent=frm;
//ПОКАЗЫВАЕМ ВТОРУЮ ФОРМУ
frm.Show();
//САМОЕ ГЛАВНОЕ:
//ПОЛУЧАЕМ CURRENCYMANAGER ДЛЯ ГЛАВНОЙ ФОРМЫ
cm=(CurrencyManager)this.BindingContext[this.ds.Customers];
//ПОЛУЧАЕМ CURRENCYMANAGER ДЛЯ ВТОРОЙ ФОРМЫ
cm1=(CurrencyManager)frm.BindingContext[this.ds.Customers];
//ПОДПИСЫВАЕМСЯ НА СОБЫТИЕ ДЛЯ CURRENCYMANAGER ГЛАВНОЙ ФОРМЫ
cm.PositionChanged+=new EventHandler(cm_PositionChanged);
}
private void cm_PositionChanged(object sender, EventArgs e)
{
//ТАКИМ ОБРАЗОМ СИНХРОНИЗИРУЕМ НАШИ ДВА CURRENCYMANAGER
cm1.Position=((CurrencyManager)sender).Position;
}