Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Colore cella datagrid
lunedì 27 dicembre 2004 - 13.06
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ale_cincischio
Profilo
| Newbie
28
messaggi | Data Invio:
lun 27 dic 2004 - 13:06
Salve a tutti. Ho un problema. Ho un datagrid di una windows form nel quale la 3 colonna deve cambiare colore in base al valore in essa contenuto. Questo già funziona. Il problema è cambiare il colore alle celle precedenti e successive. Come posso fare?
Grazie mille,
Alessio.
francescox78
Profilo
| Junior Member
117
messaggi | Data Invio:
lun 27 dic 2004 - 16:09
Mi spiace ma so che per un DataGrid di un windows form non si puòcambiare lo sfondo di una particolare cella o colonna.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 27 dic 2004 - 22:19
Che io sappia per fare queste cose, devi creare una nuova classa derivata dalla DataGrid principale e fare un override del metodo Paint. In questo modo puoi gestire tu il Repaint di ogni cella/riga e cololarla a tuo piacimento in base a condizioni che definisci tu.
Certo non è facilissimo.
ciao
david
ale_cincischio
Profilo
| Newbie
28
messaggi | Data Invio:
mar 28 dic 2004 - 10:00
vero, ho letto un pò di documentazione sul paint e ci sono riuscito.
Grazie mille
francescox78
Profilo
| Junior Member
117
messaggi | Data Invio:
mar 28 dic 2004 - 10:58
Ale,
potresti scrivere il codice che ti ha permesso di cambiare il colore allo sfondo, poichè non è così immediato come implementazione, daresti una mano a tanta gente... compreso me.
Francesco.
ale_cincischio
Profilo
| Newbie
28
messaggi | Data Invio:
mar 28 dic 2004 - 11:07
Mi sembra giusto.
Questa classe che posto riesce a cambiare il colore ad una singola cella di un datagrid in base al valore contenuto in essa.
Public Class ColoredTextBoxColumn
Inherits DataGridTextBoxColumn
Protected Overloads Overrides Sub Paint(ByVal graph As Graphics, _
ByVal rectbounds As Rectangle, ByVal curmngrSrc As _
CurrencyManager, ByVal RowNumber As Integer, ByVal _
ForeColorBrush As Brush, ByVal BackColorBrush As Brush, _
ByVal AlignmentRight As Boolean)
Dim ObjVal As Object
ObjVal = Me.GetColumnValueAtRow(curmngrSrc, RowNumber)
If Not (IsNothing(ObjVal) Or IsDBNull(ObjVal)) Then
'codice personalizzato. In questo caso la cella diventa gialla se il valore della cella stessa è maggiore
'di 1
Dim cellValue As Integer
cellValue = CType(ObjVal, Integer)
If (cellValue > 1) Then
BackColorBrush = Brushes.Yellow
ForeColorBrush = Brushes.Red
Else
BackColorBrush = Brushes.White
ForeColorBrush = Brushes.Black
End If
End If
' Chiama Paint dalla classe base per
' compiere le operazioni di disegno vere e proprie.
MyBase.Paint(graph, rectbounds, curmngrSrc, RowNumber, _
BackColorBrush, ForeColorBrush, AlignmentRight)
End Sub
End class
Una volta fatta la classe, dall'esterno ho dichiarato una variabile istanziandola così:
dim prova as new ColoredTextBoxColumn
With prova
.HeaderText = "campo di prova"
.MappingName = "nome_del_campo_nel_database"
.ReadOnly = True
.Width = 80
End With
e l'ho agganciato in un tablestyle. Ed il gioco è fatto.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !