Установите значение элемента combobox программно
Я искал этот ответ. Проверено здесь: Как установить значение combobox, но я не уверен, что это относится ко мне (может быть неправильно, пожалуйста, поправьте меня, если я). Я использую VB.Net, VS2012 и мне нужно программно установить значение элемента combobox, который привязан к базе данных.
Мой код теперь выглядит следующим образом (это из цикла, присваивающего кучу значений элементов управления):
cboCountry.SelectedValue = row.Item("CCCOUNTRY").ToString
При этом выбранное значение не присваивается. У меня тоже есть попробовал:
cboCountry.SelectedItem = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
Но и это не работает. Для этого примера:
- у меня есть один combobox
- он имеет два значения databound в свойствах valuemember, " US "и"CA"
- элемент строки, которому я присваиваю его, является одним из этих значений.
Опять же, все, что мне нужно сделать, это установить selectedvalue программно. Любая помощь очень ценится!
5 ответов:
Вы близки ко второй попытке-замените SelectedItem на SelectedIndex:
cboCountry.SelectedIndex = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
Вы должны использовать:
cboCountry.Items.FindByText(row.Item("CCCOUNTRY").ToString()).Selected = True
Это сработало для меня сегодня в vb.net vs2010
CboCountry.Свойства selectedIndex = cboCountry.FindString ("CCCOUNTRY").ToString
Названия элементов управления и значения для меня были разными, но я продолжил предыдущие сообщения пользователей...
Это сработало для меня в проекте с VB.NET VS2010
cboCountry.SelectedIndex = cboCountry.FindString("CCCOUNTRY").ToString
Конечно, проект имеет разные названия и значения
Я сталкивался с той же проблемой и не нашел ответа на этот вопрос. сеть. По-видимому, Microsoft еще не устранила эту проблему. Я использую VB для приложения VS2010 WinForms (в Windows 7). В конце концов я решил закодировать обходной путь, где бы я ни пытался установить выбранное значение ComboBox, я сделал следующее изменение:
' my_cbx.SelectedValue = data_row.value ' doesn't work! PresetSelectedValue(my_cbx, data_row.value)
Затем я добавил следующую подпрограмму, вызываемую указанными выше изменениями:
Public Sub PresetSelectedValue(ByRef ComboBox As ComboBox, ByVal value As Object) Dim item_ndx As Integer If ComboBox Is Nothing Then ' throw exception? Exit Sub End If With ComboBox .Tag = "PresetSelectedValue" For item_ndx = 0 To .Items.Count - 1 .SelectedIndex = item_ndx If .SelectedValue = value Then Exit For End If Next If item_ndx >= .Items.Count Then .SelectedIndex = -1 End If .Tag = "" End With End Sub
Наконец, я добавил следующий код в свой комбинированный список.Событие SelectedValueChanged (это предотвращает нормальную логику событий, когда пользователь изменяет значение из выполняется на каждой итерации цикла For В моей подпрограмме выше):
If my_cbx.Tag = "PresetSelectedValue" Then Exit Sub End If