У меня есть три флажка в моей базе данных доступа, и в зависимости от того, какие из них отмечены, я хочу, чтобы каждая строка в Datagridview была определенного цвета.
- True, False, False - строка должна быть синей
- False, False, False - строка должна быть желтой
- True, True, False - строка должна быть красной
- True, False, True - строка должна быть зеленой
Мой код ниже, кажется, работает должным образом, когда я фильтрую свою базу данных, но не когда я просматриваю все записи (он просто делает все строки одним цветом [желтым]).
Вот код, который я написал до сих пор:
private void sJDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
Color viewModeColour = Color.White; // Default Colour
Color viewModeColourRGB = Color.FromArgb(viewModeColour.R, viewModeColour.G, viewModeColour.B);
foreach (DataGridViewRow row in sJDataGridView.Rows)
{
if (Convert.ToBoolean(row.Cells[14].Value) == true)
{
if (Convert.ToBoolean(row.Cells[15].Value) == true)
{
viewModeColour = Color.FromArgb(0xFF8787); // Red
}
else
{
if (Convert.ToBoolean(row.Cells[16].Value) == false)
{
viewModeColour = Color.FromArgb(0xE3F7FF); // Blue
}
else
{
viewModeColour = Color.FromArgb(0xE5FFCC); // Green
}
}
}
else
{
if (Convert.ToBoolean(row.Cells[15].Value) == false)
{
if (Convert.ToBoolean(row.Cells[16].Value) == false)
{
viewModeColour = Color.FromArgb(0xFFFDCC); // Yellow
}
}
}
viewModeColourRGB = Color.FromArgb(viewModeColour.R, viewModeColour.G, viewModeColour.B);
}
for (int i = 0; i < sJDataGridView.Rows.Count; i++)
{
sJDataGridView.Rows[i].DefaultCellStyle.BackColor = viewModeColourRGB;
}
}
}
Попробуйте проверить каждый из вашего состояния в различных if
блок операторов.
И примените DefaultCellStyle
внутри вашего блока foreach
.
foreach (DataGridViewRow row in sJDataGridView.Rows)
{
bool a = Convert.ToBoolean(row.Cells[14].Value);
bool b = Convert.ToBoolean(row.Cells[15].Value);
bool c = Convert.ToBoolean(row.Cells[16].Value);
if (a == true && b == false && c == false)
viewModeColour = Color.FromArgb(0xE3F7FF); // Blue
if (a == false && b == false && c == false)
viewModeColour = Color.FromArgb(0xFFFDCC); // Yellow
if (a == true && b == true && c == false)
viewModeColour = Color.FromArgb(0xFF8787); // Red
if (a == true && b == false && c == true)
viewModeColour = Color.FromArgb(0xE5FFCC); // Green
viewModeColourRGB = Color.FromArgb(viewModeColour.R, viewModeColour.G, viewModeColour.B);
row.DefaultCellStyle.BackColor = viewModeColourRGB;
}