2013-04-28 6 views
-1

Почему у меня есть null в Combobox.SelectedValue? SelectedItem не null, это анонимный объект. DisplayMember работает отлично.C# окна формы ComboBox проблема

 var item1 = 
      new 
      { 
       Name = "some phrase1", 
       Value = 0 
      }; 

     var item2 = 
      new 
      { 
       Name = "some phrase2", 
       Value = 1 
      }; 

     _cmb = new ComboBox(); 
     _cmb.Items.Add(item1); 
     _cmb.Items.Add(item2); 

     _cmb.DisplayMember = "Name"; 
     _cmb.ValueMember = "Value"; 

     //..... 

     //onchange method 
     { 
      var nulled = _cmb.SelectedValue //why it's null??? 
     } 

ответ

2

Очевидно, что в комбинированном поле нет выбранного элемента.

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem.aspx

Объекта, который является выбранным элементом или нулем, если нет выбранного пункта.

EDIT; Я проверил его, и он возвращает объект, если вы его выберете ... вы не можете получить доступ к его свойствам, потому что анонимный объект, но вы можете использовать отражение или объявить класс, интерфейс или структуру и использовать его.

Если вы получили нуль, то в поле со списком не выбран выбранный элемент.

1

К сожалению, ComboBox не работает с анонимными типами.

is весь объект в собственности SelectedItem, однако у вас нет доступа к его свойствам напрямую, поскольку они находятся в анонимном типе.

Вы можете использовать отражение (но не следует) или создать не анонимный тип с помощью свойств Key/Name и Value и использовать его вместо этого.

Или использовать встроенный в KeyValuePair<T, T>, если у вас есть только ключ/Имя и Значение:

var item1 = new KeyValuePair<string, int>("some phrase1", 0); 
var item2 = new KeyValuePair<string, int>("some phrase2", 1); 
Смежные вопросы