gpt4 book ai didi

C# Datagridview - 行后颜色不适用于每行

转载 作者:行者123 更新时间:2023-11-30 22:58:34 26 4
gpt4 key购买 nike

我的访问数据库上有三个复选框,根据选中的复选框,我希望 Datagridview 中的每一行都具有特定的颜色。

  • True, False, False - Row should be Blue
  • False, False, False - Row should be Yellow
  • True, True, False - Row should be Red
  • True, False, True - Row should be Green

当我过滤我的数据库时,我的下面的代码似乎可以正常工作,但当我查看所有条目时却不能正常工作(它只是使所有行都变成一种颜色 [黄色])。

这是我到目前为止编写的代码:

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 语句 block 中检查您的每个条件。

并在 foreach block 中应用 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;
}

关于C# Datagridview - 行后颜色不适用于每行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com