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:
Il problema è che la variabilecodice: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
è popolata ancora con il valore precedente alla modifica quando parte l'evento ComboBoxIndexChanged.codice:dgvAssegnaColonne.Rows(dgvAssegnaColonne.CurrentRow.Index).Cells(3).Value
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

Rispondi quotando