Вы не единственный, кто столкнулся с этой проблемой, приятно слышать, что это не только я.Что не происходит, так это что-то, что связано с преобразованием типов - если вы явно приведете свой SelectedValue
к типу точный в источнике данных, вы обнаружите, что можете успешно установить значение.
Например:
comboBox1.ValueMember = "Value";
comboBox1.DisplayMember = "Key";
object ds = new KeyValuePair<string, long>[] {
new KeyValuePair<string,long>("a",0),
new KeyValuePair<string,long>("b",1),
new KeyValuePair<string,long>("c",2),
new KeyValuePair<string,long>("d",3),
new KeyValuePair<string,long>("e",4)
};
comboBox1.DataSource = ds;
comboBox1.SelectedValue = 3; // this won't work
comboBox1.SelectedValue = (long)3; // this will work
По любой причине, даже если «3» в качестве длинного равно «3» в виде целого, ComboBox
отказывается играть в мяч, если вы нетип точно правильный.
Я могу предположить, что это как-то связано с тем фактом, что WinForms ComboBox
является оболочкой для версии COM, и после создания собственного элемента управления проявляется другое поведение.
Надеюсь, это поможет с вашей конкретной проблемой!