Поведение .NET DataGridViewComboBoxCell при потере фокуса - PullRequest
0 голосов
/ 09 марта 2010

У меня есть DataGridView, связанный с DataTable. Когда привязка завершена, я вручную ищу все ячейки DGV и заменяю одну обычную ячейку DGV экземпляром DataGridViewComboBoxCell. К ячейке привязан собственный источник данных.

Проблема, с которой я столкнулся, заключается в том, что когда пользователь делает выбор в ячейке DataGridViewComboBoxCell и покидает ее, он меняет отображаемую строку с того, чем является DisplayMember (что-то вроде «Склад № 23»), на свой базовый ValueMember (что-то как 23). При повторном вводе ячейки она возвращается к отображению DisplayMember (и т. Д.). Кроме этого, все работает правильно (графический интерфейс можно использовать, выбор может быть сделан, только отображение неисправно).

Есть ли свойство объекта DataGridViewComboBoxCell, которое управляет этим поведением? Или это происходит от того, что я вручную имплантировал DataGridViewComboBoxCell в обычный столбец DGV?

Да, и причина, по которой я это делаю, заключается в том, что мне нужен простой способ создания пользовательского интерфейса ввода на лету. Можно просто создать DataTable программно и подключить его к DGV. DGV создает «GUI» и делает его пригодным для использования. Вы можете использовать один столбец для заголовка и один для ввода пользователя. Теперь мне нужны не только стандартные текстовые ячейки (которые в основном являются текстовыми полями), но и ячейки со списком, ориентированные на выделение.

1 Ответ

0 голосов
/ 10 марта 2010

Я предоставлю своего рода решение для людей, которые могут оказаться в такой ситуации.

Я не обнаружил никакой реальной причины происходящего, но сумел исправить ситуацию, обработав отображение содержимого ячеек вручную. Это можно сделать, внедрив обработчик событий для события CellFormatting объекта DataGridView. Там вы устанавливаете для свойства e.Value все, что вам нужно.

...