Динамический ComboBox в DataGridView

У меня есть DataGridView с 4 столбцами, один из которых является столбцом раскрывающегося списка (ComboBox). Значения в этом столбце должны быть разными, поэтому после выбора данного раскрывающегося списка в строке я бы хотел, чтобы оно не было доступно ни в одном из раскрывающихся списков в других строках. Если данное значение не выбрано, оно должно снова появиться в раскрывающихся списках. Я нашел несколько статей с похожими примерами (1 , 2, 3); однако все они, похоже, включают подписку на событие и ручное заполнение ComboBox.

  • Есть ли способ сделать это с помощью одной привязки данных (возможно, для IEnumerable, который в основном является запросом all.Except(selected) Linq)?
  • Если одной привязки данных недостаточно, есть ли лучший способ сделать это, чем примеры, которые я нашел?

Я новичок в разработке WinForms, поэтому не могу отличить хороший совет от «да ... вроде как».


person R0MANARMY    schedule 04.10.2011    source источник


Ответы (1)


Боюсь, ваш поиск пока верен - нет лучшего способа предоставить разные списки для комбинированных списков в одном столбце DataGridView, чем подписка на события (обычно CellBeginEdit и CellEndEdit, а затем установка DataSource для отдельного DataGridViewComboBoxCell).

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

person David Hall    schedule 04.10.2011
comment
Вы бы случайно не узнали, стало ли лучше с элементами управления WPF? - person R0MANARMY; 05.10.2011
comment
@ R0MANARMY Я специально не пробовал этот вид связанного источника со списком со списком с любой из сеток WPF, но в целом я обнаружил, что с WPF гораздо приятнее работать - даже при выполнении немного необычных вещей - чем с winforms. Совершенно уверен, что вы можете использовать расширенную привязку WPF для привязки определенных элементов управления к какой-либо функции для поддержки этого. - person David Hall; 05.10.2011