Я работал в проекте с VS2005 и VB.NET, в этом проекте у меня есть DataGridView с 3 DataGridViewComboboxCell внутри него. То, что я пытался сделать, это сделать так, чтобы, когда пользователь выбирает значение из первого DataGridViewComboboxCell, изменяется значение 2 других ячеек. Это код для этой части:DatagridViewComboboxCell selectedindexchanged не работает
Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If (TypeOf e.Control Is DataGridViewComboBoxEditingControl) AndAlso _
DataGridView1.CurrentCell.ColumnIndex = 1 Then
Dim cbo As ComboBox = TryCast(e.Control, ComboBox)
If (cbo IsNot Nothing) Then
RemoveHandler cbo.SelectedIndexChanged, AddressOf comboBox_SelectedIndexChanged
AddHandler cbo.SelectedIndexChanged, AddressOf comboBox_SelectedIndexChanged
End If
End If
End Sub
Private Sub comboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim combo As ComboBox = TryCast(sender, ComboBox)
Dim rowIndex As Long = DataGridView1.CurrentRow.Index
Dim valueType As Type = GetType(Long)
If (combo.SelectedValue IsNot Nothing) Then
Dim comboValueType As Type = combo.SelectedValue.GetType()
Dim p As Boolean = valueType.Equals(comboValueType)
If Not valueType.Equals(comboValueType) Then
Exit Sub
End If
End If
DataGridView1.Rows(rowIndex).Cells(2).Value = 'Some DB query to retrieve the value
End Sub
Первая проблема, которая у меня есть, что, когда я открываю список из выпадающего списка и введите I
, чтобы выбрать один элемент из выпадающего списка, которые начинаются с I
. Выпадающий не обновляется, чтобы выбрать этот пункт и всегда возвращается к первому элементу в выпадающем списке, так что я делаю, чтобы сделать эту работу было изменить значение выпадающего списка на его собственном SelectedIndexChange, как это:
Private Sub comboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim combo As ComboBox = TryCast(sender, ComboBox)
Dim rowIndex As Long = DataGridView1.CurrentRow.Index
Dim valueType As Type = GetType(Long)
If (combo.SelectedValue IsNot Nothing) Then
Dim comboValueType As Type = combo.SelectedValue.GetType()
Dim p As Boolean = valueType.Equals(comboValueType)
If Not valueType.Equals(comboValueType) Then
Exit Sub
End If
End If
DataGridView1.Rows(rowIndex).Cells(1).Value = combo.SelectedValue
DataGridView1.Rows(rowIndex).Cells(2).Value = 'Some DB query to retrieve the value
End Sub
Вторая проблема заключается в том, когда я набираю другую букву для выбора элемента, начинающегося с этой буквы, и без нажатия клавиши ввода или щелчка элемента, который я изменил на другой DatagridViewComboboxCell, со списком, который снова вызывает событие SelectedIndexChanged, которое меняет его значение на первый элемент в выпадающем списке.
Любая идея, почему это происходит?
Hi WozzeC, я использую 'dgvOperaciones.Rows (idx) .Cells (2) .Value = combo.SelectedValue' и combo.SelectedValue отлично работает, но проблема сохраняется. Я изменил свой код и использовал ваш код и не работал. – fcartu