Angenommen, Sie haben bestimmte Zelle zu färben (nicht alle Zellen der Zeile) durch das Wissen, zwei Dinge:
- Name oder Index der Spalte.
- Wert, der in der Zelle sein wird.
In THAS Fall, dass Sie Ereignis CellFormatting
In meinem Fall habe ich wie dieses
private void DgvTrucksMaster_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
foreach (DataGridViewRow row in dgvTrucksMaster.Rows)
{
if (Convert.ToInt32(row.Cells["Decade1Hours"].Value) > 0)
{
row.Cells["Decade1Hours"].Style.BackColor = Color.LightGreen;
}
else if (Convert.ToInt32(row.Cells["Decade1Hours"].Value) < 0)
{
// row.DefaultCellStyle.BackColor = Color.LightSalmon; // Use it in order to colorize all cells of the row
row.Cells["Decade1Hours"].Style.BackColor = Color.LightSalmon;
}
}
}
verwenden verwenden und führen Sie hier sehen
Also hier Sie können auf bestimmte Zellen der Zeile in der Spalte mit dem NamenzugreifenReihe.Zellen ["Decade1Hours"]
Woher kennen Sie diesen Namen? Nun, in meinem Fall erstelle ich eine Spalte von DataGridView wie folgt.
var Decade1Hours = new DataGridViewTextBoxColumn()
{
Name = "Decade1Hours",
Width = 50,
DataPropertyName = "Decade1Hours",
ReadOnly = true,
DefaultCellStyle = new DataGridViewCellStyle()
{
Alignment = DataGridViewContentAlignment.MiddleCenter,
ForeColor = System.Drawing.Color.Black,
Font = new Font(font, FontStyle.Bold),
Format = "n2"
},
HeaderCell = new DataGridViewColumnHeaderCell()
{
Style = new DataGridViewCellStyle()
{
Alignment = DataGridViewContentAlignment.MiddleCenter,
BackColor = System.Drawing.Color.Blue
}
}
};
Decade1Hours.HeaderText = "Дек.1";
dgvTrucksMaster.Columns.Add(Decade1Hours);
Und gut ... Sie müssen Sie zum Beispiel kolorieren einige der Zellen in der Zeile wie ## 1 4 5 und 8 Sie Zelle Index verwenden (es beginnt bei 0).
Und Code wird lok wie
private void DgvTrucksMaster_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
foreach (DataGridViewRow row in dgvTrucksMaster.Rows)
{
if (Convert.ToInt32(row.Cells[1].Value) > 0)
{
row.Cells[1].Style.BackColor = Color.LightGreen;
}
}
}
Dank, Sorry für die späte Antwort funktionierte es perfekt .. – preethi
Wäre das nicht unglaublich ineffizient sein? Da Sie alle Datensätze jedes Mal durchlaufen, werden alle Zellen neu gezeichnet. Wenn Sie diesen Ansatz verwenden, muss die gesamte Foreach-Klausel nicht innerhalb des CellFormatting-Handlers sein, sondern "dataGridView1_DataBindingComplete". – 40Plot
oder verwenden Sie var Myrow = dataGridView1.Rows [e.RowIndex] anstelle einer Schleife –