2009-08-05 3 views
1

У меня есть 3 ComboBoxes в форме, список объектов. Мне нужно связать выпадающие списки с 3 разными членами класса из списка. (C# 3.0, .NET 3.5) Я сейчас делаю этоНесколько Комбобокс со списком объектов

Title_Combo.DataSource = ListContaining.GroupBy(item => item.Title).Where(item => !item.Key.Equals(string.Empty)).ToList(); 

Title_Combo.DisplayMember = "Key"; 

Где ListContaining подмножество основного списка objects.Every времени элемент выбран в любом из этого Наримера ListContaining населен на основе выбранного значения из основного списка объектов, таких как и все выпадающие списки перегружаются.

ListContaining = ListFiles.Where(item => item.GetType().GetProperty(name).GetValue(item, null).Equals(int.Parse(Sender.SelectedItem.ToString()))).ToList(); 

Он загружается отлично, но следующий выбор comboboxes вызывает исключение NullReference.

Это связано с тем, что список ListContaining переписывается или что-то еще, я могу понять.

и есть лучший способ обработки 3 списков со списком.

Ваша помощь приветствуется.

EDITED: Я отказался от отладки этого. Но может ли кто-нибудь предложить способ связывания 3 comboboxes с единственным списком объектов с 3 различными свойствами. И контрольные обновления обновляются при изменении индекса.

ответ

0

Ну, я получил ответ.
Вы можете использовать подмножество объектов для привязки элемента управления, что не является причиной проблемы.
И я могу обрабатывать несколько comboboxes описанным образом.

1

Эта проблема может возникнуть, если тип списка вашей второй combobox является DropDown, а не DropDownList, обычно такая же ошибка в этом исключении упоминается returns.Please проверьте свои элементы управления.

Для второй мысли, если ваши ComboBoxes связаны друг с другом, а именно:

Один ко многим отношение

  • ComboBox: CompanyGroup
  • ComboBox: Компания
  • ComboBox: Лицо

-> Если один ча nges сверху, ниже. Вы случай, как:

Многие ко многим отношение

  • ComboBox: Метки
  • ComboBox: Вопросы

-> Если вопрос изменяет это вызывает свои собственные теги и если теги меняются, и он вызывает только те теги, которые заданы.

Для этой цели вы должны искать всю коллекцию каждый раз, когда изменяется элемент combobox. Поскольку, как я понимаю из вашего вопроса, один из вариантов вызывает другой выбор.

+0

Да, мой стиль выпадающего списка, и это не вызывает проблемы, так как выбранное значение проверяется на нулевые значения. Да, мое отношение много к большому, и поэтому я группирую и просматриваю список. Я обеспокоен тем, что список меняется каждый раз, когда я выбираю так, это вызывает проблему. – lune

1

Почему вы не используете дополнительные списки, в которых хранятся значения combobox?

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

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

+0

Да, это можно сделать, но значения можно редактировать и, следовательно, потребуется синхронизация с другими списками. Это было бы решением, если бы не было лучшего решения. Я не уверен, что это можно сделать со словарем. – lune

+0

Согласовано. Вот почему я сказал дополнительные строки кода. Во всяком случае, у меня была аналогичная проблема, и это было моим решением. Скорее менее эффективен, чем есть, но список строк также дает мне дополнительную функциональность. Кроме того, лично я предпочитаю несколько строк меньшего размера кода вместо умно написанной, но очень длинной 1 строки кода. – someone

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