2010-01-15 3 views
1

У меня есть форма окна (net 2.0) с элементами управления на нем, связанными с сущностью (w/INotifyPropertyChanged) через BindingSource..works.Winform BindingSources - Вопрос

На той же форме, у меня есть выпадающий список, который также проводную вверх через BindingSource..works

Вот пример соответствующего кода:

m_PlanItemLookupBindingSource.DataSource = GetBusinessLogic().RetrievePaymentPlanLookups(); // Collection of PaymentPlans 
paymentPlanType.Properties.DataSource = m_PlanItemLookupBindingSource; 
paymentPlanType.Properties.DisplayMember = "Name"; 
paymentPlanType.Properties.ValueMember = "ID"; 
paymentPlanType.DataBindings.Add(new Binding("EditValue", m_PlanBindingSource, "PaymentPlanID", true, DataSourceUpdateMode.OnPropertyChanged, null, "D")); 

agencyComission.DataBindings.Add(new Binding("EditValue", m_PlanBindingSource, "AgencyCommission", true, DataSourceUpdateMode.OnPropertyChanged, null, "P1")); 
billingType.DataBindings.Add(new Binding("Text", m_PlanBindingSource, "BillingType")); 

Так что, когда я изменить значение в раскрывающемся списке я думал, что свойство m_PlanItemLookupBindingSource Current будет меняться вместе с свойством PaymentPlanID объекта, который изменится.

Немного смущен.

Заранее спасибо, Стивен

ответ

1

BindingSource принимает значение в элементе управления и устанавливает его в основном источнике, который является текущим объектом определяется свойством позиции BindingSource.

Поэтому, когда вы выбираете значение в выпадающем списке, свойство PaymentPlanID базового объекта устанавливается с выбранным новым значением. Основной объект идентифицируется текущим свойством в BindingSource.

Если вы хотите переместить текущее свойство в объект, который вы выберете в раскрывающемся списке, вам необходимо использовать методы MoveFirst, MoveLast, MovePrevious или MoveNext или Position в BindingSource.

Как я вижу, вы можете сделать следующее: в обработчике событий события Changed или ValueChanged в выпадающем списке вы получаете индекс выбранного элемента, индекс которого вы можете передать в BindingSource. Укажите свойство.

Changed or ValueChanged event handler 
    ... 
    int index = DropDownList.ListIndex 
    BindingSource.Position = index 
    ... 
End event handler 

Вы должны удалить DataBinding, который связывает падение вниз sefrom Листом выпадающий список EditValue к PaymentPlanID. Таким образом, PaymentPlanId в базовом объекте не будет установлен на выбранное значение до изменения позиции в источнике BindingSource.

Смежные вопросы