Ciao a tutti,
ho un problema a trovare gli eventi corretti che mi consentono di gestire una situazione apparentemente semplice.
In pratica ho una dgv con una sola colonna editabile di tipo combobox popolata sempre con gli stessi elementi; se l'utente seleziona un valore già presente in un'altra riga della grid quest'ultima combobox deve essere messa a index 0 e quindi senza nessun testo selezionato.
Ho fatto questo codice:
codice:
Private Sub ComboBoxIndexChanged()
Dim i As Integer
For i = 0 To dgvAssegnaColonne.Rows.Count - 1
If i <> dgvAssegnaColonne.CurrentRow.Index Then
If dgvAssegnaColonne.Rows(i).Cells(3).Value = dgvAssegnaColonne.Rows(dgvAssegnaColonne.CurrentRow.Index).Cells(3).Value Then
dgvAssegnaColonne.Rows(i).Cells(3).Value = ""
Exit Sub
End If
End If
Next
End Sub
Private Sub dgvAssegnaColonne_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvAssegnaColonne.EditingControlShowing
Dim comboBox As ComboBox = CType(e.Control, ComboBox)
If (Not (comboBox) Is Nothing) Then
'RemoveHandler comboBox.SelectedIndexChanged, AddressOf Me.ComboBoxIndexChanged
AddHandler comboBox.SelectedIndexChanged, AddressOf Me.ComboBoxIndexChanged
End If
End Sub
Il problema è che la variabile
codice:
dgvAssegnaColonne.Rows(dgvAssegnaColonne.CurrentRow.Index).Cells(3).Value
è popolata ancora con il valore precedente alla modifica quando parte l'evento ComboBoxIndexChanged.
Ho cercato tra tutte le possibili CellValidated, CellValidating , CellValueChanged etc ma non trovo nulla che fa al caso mio.
Sapete darmi una mano?
Grazie
Andrea