Невозможно перейти из выпадающего списка Winforms с привязкой к данным - PullRequest
7 голосов
/ 14 ноября 2008

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

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

По сути, у меня есть форма с пользовательским элементом управления и некоторыми полями для сбора данных. 3 поля - это раскрывающиеся списки, а в пользовательском элементе управления есть элемент управления bindingSource, который напрямую связан с классом Product.

Во время выполнения я предоставляю экземпляр класса Product для BindingSource, и этот класс содержит свойство ProductType. Для простоты я также добавил List<ProductType> ProductTypes к классу продукта, который загружается сам при запросе, что означает, что я могу просто использовать тот же связующий источник и выбрать ProductTypes элемент данных в качестве источника данных для раскрывающегося списка.

После запуска формы список отлично связывается, и я вижу все перечисленные типы продуктов, и я могу выбрать один и вкладку или щелкнуть в следующем поле. Но очевидно, что выбранное значение не будет привязано, потому что я не выбрал для раскрывающегося списка никакие bindings-SelectedValue, а только источник данных. Как только я убедился, что раскрывающийся список изменяет экземпляр Product, связавшись с Bindings-SelectedValue, а затем запустил форму, список все равно заполняется идеально, и я могу перемещаться по элементам управления, пока я этого не сделаю. сделать выбор из выпадающего списка. Если я сделаю выбор из выпадающего списка, то выпадающий список удерживает фокус . Я не могу перейти на вкладку из-за любви или денег и даже не могу нажать кнопку «Отмена» в форме, кнопка «Закрыть» в верхнем правом углу - единственная кнопка, которую я могу нажать, которая работает, и я не могу нажать на любое другое поле или раскрывающийся список. Это влияет на все три раскрывающихся списка, как только будет сделан выбор.

У кого-нибудь есть идеи, что мне не хватает?

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

Любая помощь приветствуется!

Ответы [ 3 ]

10 голосов
/ 14 ноября 2008

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

2 голосов
/ 06 августа 2009

Спасибо за вклад в это, помог мне обернуть голову вокруг этого.

В моем случае оказывается, что в одном из EventHadlers было выброшено исключение для моего события ComboBox.Validating. Было трудно отследить, потому что IDE не показывал мне это исключение. Мне удалось изменить поведение «Исключение» (в меню отладки), чтобы оно показывало любое выбрасываемое исключение InvalidOperationException, а затем я смог отследить его.

Как предположил Том, отключение CuasesValidation - это способ выяснить это.

0 голосов
/ 19 марта 2009

Для выпадающих списков Infragisticst (может быть неверно для других выпадающих окон winform): если для «LimitToList» установлено значение true, вы можете застрять в выпадающем списке, из которого вы не сможете выйти, не осознав этого. Используйте ItemNotInList даже, чтобы вызвать предупреждающее сообщение.

...