Re: WinForms: вопрос по Binding
От: Ael США  
Дата: 29.03.04 22:48
Оценка: 1 (1)

//Мне кажется, лучше всего про 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;
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.