Странные два элемента управления / та же проблема источника данных - PullRequest
2 голосов
/ 17 июня 2009

Это использует winforms.

У меня есть список и поле со списком, оба связаны с одним и тем же источником данных, одинаковыми элементами отображения, одинаковыми элементами значения. Все просто отлично, и элементы отображаются в обоих элементах управления.

Проблема в том, что когда я изменяю выделение в одном элементе управления, он перемещается к тому же индексу в другом элементе управления. У меня нет событий, связанных с каким-либо контролем. Это просто происходит само по себе. Кто-нибудь когда-нибудь сталкивался с этим?

Ответы [ 3 ]

3 голосов
/ 17 июня 2011

Это потому, что оба элемента управления имеют одинаковые BindingContext/CurrencyManager. Элементы управления наследуют BindingContext от элемента управления своего контейнера. BindingContext поддерживает только один CurrencyManager для каждого источника данных. Если вы хотите иметь два разных CurrencyManager, вам нужно иметь два BindingContexts.

Таким образом, при изменении выбора элемента управления currencyManagaer.Current обновляется. Это влияет на все элементы управления, которые используют один и тот же источник данных.

Создайте новый BindingContext и назначьте его свойству BindingContext одного из ComboBox:

comboBox2.BindingContext = new BindingContext ();

Это должно решить проблему.

2 голосов
/ 17 июня 2009

Источник данных - это отдельный объект. Когда один из элементов управления изменяет активную строку источника данных, он отправляет уведомление об обновлении другим элементам управления для соответствующего перемещения. Это нормальное и ожидаемое поведение.

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

Если вы не хотите этого, используйте два источника данных, привязанных к одним и тем же базовым данным.

0 голосов
/ 17 июня 2009

Я думаю, что это может быть функция.Для основных / подробных форм.

...