+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Visual Basic .NET DataGridView - Cambiare colore di una cella da codice

  1. #1
    dodiro non è in linea Novello
    In un controllo DataGridView devo cambiare il ForeColor di una cella in funzione del contenuto della stessa.
    Immagino che questa opzione sia disponibile ma per ora riesco solo a cambiare il ForeColor della colonna modificando la sua proprietà.
    Per favore, qualcuno può dirmi se sia possibile fare questo cambiamento e in caso affermativo quale sia la sintassi in Visual Basic .NET per cambiare il ForeColor della cella dopo avere fatto il test del suo contenuto?
    Grazie per l'aiuto.

  2. #2
    Mi sembra che sia be, documentato su

    https://msdn.microsoft.com/it-it/lib...cs-save-lang=1

    ma anche in tanti articoli e siti... Basta una ricerca preventiva
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    Gidisoft non è in linea Scolaretto
    Ciao,sotto il codice specifico per comandare il forecolor. Molto semplice
    Interessante sarebbe capire come legare questa proprietà al formato della cella. Per capirci, una specie di formattazione condizionale.


    codice HTML:
    DGV_SB.CurrentCell.Style.ForeColor = Color.Red

  4. #4
    dodiro non è in linea Novello
    Ho una DGV che ha molti record e all'atto del Form_Load attivo un ciclo For-Next che esamina tutte le righe e se l'importo di una certa colonna è negativo cambio il ForeColor in rosso.
    Il problema però è gestire questo evento Run Time al verificarsi di nuovi inserimenti o modifiche varie. Quindi sarebbe appunto interessante avere una proprietà che consenta di gestire il colore in modo condizionale ma mi sembra che Visual Studio al momento non la preveda.
    Grazie per la risposta che però ho modificato come segue:
    DatagridView1.Rows(RowIndex).Cells(ColumnIndex).St yle.ForeColor = Color.Red

  5. #5
    Gidisoft non è in linea Scolaretto
    Interessante sarebbe capire se esiste un evento che attraversi tutte le celle al momento del load.
    Riguardo la gestione della singola cella il metodo piu' semplice è di passare attraverso il validate della grid cell ( quindi al passaggio di ogni uscita da qualsiasi cella.
    Private Sub DGV_V_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV_V.CellValidated
            '= Non distinge reali variazioni del valore
            Try
                Dim currcell As DataGridViewCell = sender.currentcell
                currcell.Style.ForeColor = Color.Red
            Catch ex As Exception
    
            End Try
        End Sub
    
    Per raffinare un po, e magari darti qualche spunto, ti mostro come convogliare i passaggi da ogni cella su un unico evento . A parte ogni uso possibile futuro, io lo gradisco per poter individuare eventuali (vedi modified )

    Private Sub DGV_V_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DGV_V.EditingControlShowing
    
            Dim CurrCell As DataGridViewCell = CType(sender.currentcell, DataGridViewCell)
            If Not CurrCell Is Nothing Then
    
                Dim TxtGrid As TextBox = TryCast(e.Control, TextBox)
                Try
    
                    RemoveHandler TxtGrid.Validated, AddressOf txtGrid_validated
                    AddHandler TxtFilter.Validated, AddressOf txtGrid_validated
    
                Catch
    
                End Try
            End If
        End Sub
    
    
        Public Sub txtGrid_validated(ByVal sender As Object, ByVal e As System.EventArgs)
            Try
                If Not sender.modified Then Exit Sub
                Dim currcell As DataGridViewCell = DGV_V.CurrentCell
                If currcell.Value = "A" Then
                    currcell.Style.ForeColor = Color.Red
                    currcell.Style.BackColor = Color.Yellow
                    currcell.Style.Font = New Font(Drawing.FontFamily.GenericSansSerif, 8)
                Else
                    currcell.Style.ForeColor = Color.Yellow
                    currcell.Style.BackColor = Color.Red
                    currcell.Style.Font = New Font(Drawing.FontFamily.GenericSansSerif, 6)
    
                End If
                
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Aiuto Visual Basic colore del testo del TextBox1?
    Da Gianluca Grasso nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 27-02-2014, 21:28
  2. Risposte: 2
    Ultimo Post: 04-04-2013, 13:04
  3. [VBEE2010]Datagridview Cambiare il colore alla colonna
    Da vbrookie nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 21-10-2012, 07:10
  4. Risolto: Cambiare colore di sfondo all'header della Datagridview
    Da massimoflorian nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 04-12-2010, 12:08
  5. Cambiare colore sfondo cella in base al valore
    Da Gufo nel forum Microsoft Word
    Risposte: 10
    Ultimo Post: 15-10-2007, 17:34