Servus Experten,
der folgende Code funzt einwandfrei, nur bei entsprechend vielen DS ist die Performance(beim Datenladen) doch nicht so gegeben wie gewünscht. Ihr Experten seid so nett und schaut mal auf den Code ob man den besser bzw. fixer machen könnte. (Wenn ihr
den Code als gut beurteilt, schreibt das auch, dann kann ich den Thread gleich wieder zu machen)
Die Ausgangsituation ist die: Ein Daten-Table mit 5 Feldern;eines davon (Name: Farbe) enthält eine Colordefinition die vom User festgelegt werden kann. Ich habe nun ein DGV mit einer Spalte Farbe und einer Spalte (Image) um den Farbdialog aufzurufen.
Wir war es nicht möglich, dies in einer Spalte umzusetzen, da eine Buttonspalte den Button immer über die ganz Spaltenbreite zieht und dem Button auch kein Image zugeordnet werden konnte.
Also hier der Code:
Private Sub MonarchDataGridview1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles MonarchDataGridview1.CellContentClick
'Farbdialog aufruf
If MonarchDataGridview1.Columns(e.ColumnIndex).Name = "FarbAuswahl" Then
If (ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
MonarchDataGridview1.Rows(e.RowIndex).Cells("Farbe").Style.BackColor = ColorDialog1.Color
MonarchDataGridview1.Rows(e.RowIndex).Cells("Farbe").Style.ForeColor = ColorDialog1.Color
CCFFeedbackGruppenBindingSource.Current("Farbe") = ColorTranslator.ToHtml(ColorDialog1.Color)
End If
End If
End Sub
Private Sub MonarchDataGridview1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles MonarchDataGridview1.CellFormatting
'Zelle je nach Farbdefinition einfärben
Try
'Kopfzellen nicht formatieren
If e.ColumnIndex = -1 Or e.RowIndex = -1 Then Exit Sub
If MonarchDataGridview1.Columns(e.ColumnIndex).DataPropertyName = "Farbe" Then
e.CellStyle.BackColor = ColorTranslator.FromHtml(e.Value)
e.CellStyle.ForeColor = e.CellStyle.BackColor
End If
Catch ex As Exception
End Try
End Sub
