Элемент отображения/значения не изменяется с выбранным индексом поля со списком

Datagridview (Mydgv1) создается во время выполнения. Первый столбец в нем представляет собой редактируемый столбец поля со списком. Я установил для него элемент отображения и элемент значения, но я не могу получить правильный элемент отображения/значения. Когда я выбираю элемент из раскрывающегося списка, я получаю значение элемента значения/отображения в качестве элемента значения/отображения последнего элемента в раскрывающемся списке. Почему элемент значения/отображения не изменяется с выбранным элементом в комбо колонка коробки.

On Form Load Event

combo.HeaderText = "Item"
combo.Name = "itemid"
combo.Items.Clear()
Dim ds As SqlDataReader
Dim cmm As New SqlCommand("select itemid from itemdesc", con)
con.Open()
    ds = cmm.ExecuteReader
    If ds.HasRows Then
        While ds.Read
            combo.Items.Add(ds(0).ToString)
            combo.ValueMember = ds("itemid")
            combo.DisplayMember = ds("itemid")
        End While
    End If
con.Close()
Mydgv1.Columns.Add(combo)

On comboboxcolumn's Leave Event

it = combo.DisplayMember
MsgBox(it)

person A Koul    schedule 09.09.2014    source источник
comment
вы используете событие combobox.Leave или событие combobox.selectedIndexChanged?   -  person Markus    schedule 09.09.2014
comment
Маркус, я использую событие выхода из поля со списком. Должен ли я использовать событие selectedIndexChanged?   -  person A Koul    schedule 09.09.2014


Ответы (1)


не ссылайтесь на сам displaymember и используйте событие SelectedIndexChanged для получения выбранных значений

Private Sub combo_SelectedIndexChanged(sender as Object, e as EventArgs) Handels combo.SelectedIndexChanged

    'because your display and valuemember are set as the same
    MsgBox(combo.SelectedValue.ToString)
    'if you want the displaymember as the result use
    MsgBox(combo.Text)

End Sub
person Markus    schedule 09.09.2014
comment
Комбинация объявлена ​​глобально (забыл добавить этот код). Я не могу ввести combo.text или combo.selectedvalue . Эти два свойства не существуют для комбо. Эти свойства не отображаются во всплывающем окне с предложениями при наборе текста. Поскольку комбо — это столбец, созданный программно, и у меня нет опыта работы с ними. Нужно ли мне добавлять свойства для combo явно, я ожидал, что combo, будучи столбцом типа поля со списком, будет иметь все, что есть в обычном поле со списком. Спасибо за помощь мне. - person A Koul; 09.09.2014
comment
вы объявляете поле со списком так? Частный комбо WithEvents As ComboBox - person Markus; 09.09.2014
comment
Нет, я написал Dim combo As New DataGridViewComboBoxColumn и добавил событие выхода столбца поля со списком в событие Mydgv1_EditingControlShowing. - person A Koul; 09.09.2014
comment
Спасибо, Маркус, ваш ответ сработал, когда я использовал его в отпуске, большое спасибо. Хорошего дня. - person A Koul; 09.09.2014