Установите значение элемента combobox программно


Я искал этот ответ. Проверено здесь: Как установить значение combobox, но я не уверен, что это относится ко мне (может быть неправильно, пожалуйста, поправьте меня, если я). Я использую VB.Net, VS2012 и мне нужно программно установить значение элемента combobox, который привязан к базе данных.

Мой код теперь выглядит следующим образом (это из цикла, присваивающего кучу значений элементов управления):

    cboCountry.SelectedValue = row.Item("CCCOUNTRY").ToString

При этом выбранное значение не присваивается. У меня тоже есть попробовал:

    cboCountry.SelectedItem = cboCountry.FindString(row.Item("CCCOUNTRY").ToString)
Но и это не работает. Для этого примера:
  1. у меня есть один combobox
  2. он имеет два значения databound в свойствах valuemember, " US "и"CA"
  3. элемент строки, которому я присваиваю его, является одним из этих значений.

Опять же, все, что мне нужно сделать, это установить selectedvalue программно. Любая помощь очень ценится!

5   3  

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