Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30

    [VB.NET] Datagridview con colonna combobox

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30
    Ciao a tutti,
    spulciando su tutti gli eventi ho trovato cellendedit:

    codice:
        Private Sub dgvAssegnaColonne_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
                               Handles dgvAssegnaColonne.CellEndEdit
            ComboBoxIndexChanged()
        End Sub
    che mi sistema il mio problema nel momento in cui l'utente esce dalla combobox, e non nel momento del cambio di valore. Non mi piace ma mi accontento di questo...

    Grazie

    Andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.