C#Datagridview-每行的行背颜色不起作用
我的access数据库上有三个复选框,根据选中的复选框,我希望Datagridview中的每一行都是特定的颜色C#Datagridview-每行的行背颜色不起作用,c#,winforms,datagridview,C#,Winforms,Datagridview,我的access数据库上有三个复选框,根据选中的复选框,我希望Datagridview中的每一行都是特定的颜色 真、假、假行应为蓝色 假,假,假-行应为黄色 真、真、假行应为红色 真、假、真-行应为绿色 当我过滤我的数据库时,下面的代码似乎工作正常,但当我查看所有条目时(它只是将所有行变成一种颜色[黄色])就不行了 以下是我迄今为止编写的代码: private void sJDataGridView_RowPrePaint(object sender, DataGridViewRowPreP
- 真、假、假行应为蓝色
- 假,假,假-行应为黄色
- 真、真、假行应为红色
- 真、假、真-行应为绿色
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;
}
}
}
private void sJDataGridView_RowPrePaint(对象发送方,DataGridViewRowPrePaintEventArgs e)
{
Color viewmodecolor=Color.White;//默认颜色
Color VIEWMODECLOURRGB=Color.FromArgb(VIEWMODECLOUR.R、VIEWMODECLOUR.G、VIEWMODECLOUR.B);
foreach(sJDataGridView.Rows中的DataGridViewRow行)
{
if(Convert.ToBoolean(row.Cells[14].Value)==true)
{
if(Convert.ToBoolean(row.Cells[15].Value)==true)
{
viewmodecolor=Color.FromArgb(0xFF8787);//红色
}
否则
{
if(Convert.ToBoolean(row.Cells[16].Value)==false)
{
viewmodecolor=Color.FromArgb(0xE3F7FF);//蓝色
}
否则
{
ViewModeColor=Color.FromArgb(0xE5FFCC);//绿色
}
}
}
否则
{
if(Convert.ToBoolean(row.Cells[15].Value)==false)
{
if(Convert.ToBoolean(row.Cells[16].Value)==false)
{
ViewModeColor=Color.FromArgb(0xFFFDCC);//黄色
}
}
}
VIEWMODECLOURRGB=颜色。来自argB(VIEWMODECLOUR.R、VIEWMODECLOUR.G、VIEWMODECLOUR.B);
}
对于(int i=0;i
尝试在不同的if
语句块中检查每个条件
并在foreach
块中应用DefaultCellStyle
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;
}
尝试将颜色的指定移动到第一个loop@J.James,很高兴听到,如果可能,请点击向上箭头回答:)