如何随机着色gridview(每行随机颜色)

Posted

技术标签:

【中文标题】如何随机着色gridview(每行随机颜色)【英文标题】:How to randomly color gridview(each row by a random color) 【发布时间】:2014-09-08 08:16:41 【问题描述】:

我需要一些帮助来解决这个任务。 我需要用独特的颜色随机为 gridview 中的每条记录着色。

例子:

假设如果我在 gridview 中有十行,我想用不同的颜色随机为每一行着色。

所以输出应该是第一行用红色着色,第二行用黄色着色,依此类推。

如果我在 gridview 中取 100 行,所有 100 行都应该是唯一的。

请大家帮忙。 在此先感谢

【问题讨论】:

你有代码来改变GridView 中1 行的颜色吗?如果不是,我会先弄清楚这一点,然后再担心下一步。 你可以使用这个javascript库来生成随机颜色checkman.io/please 【参考方案1】:

结合这两个问题:

How to change row color in datagridview?

How to generate random color names in C#

foreach (DataGridViewRow row in dgv.Rows) 

    row.DefaultCellStyle.BackColor = getRandomColor();


private Color getRandomColor()


    Random randomGen = new Random();
    KnownColor[] names = (KnownColor[]) Enum.GetValues(typeof(KnownColor));
    KnownColor randomColorName = names[randomGen.Next(names.Length)];
    return  Color.FromKnownColor(randomColorName);

【讨论】:

【参考方案2】:

试试这个方法

    List<string> UsedColors = new List<string>();

    public Form1()
    
        InitializeComponent();
        foreach (DataGridViewRow row in dataGridView1.Rows)
            row.DefaultCellStyle.BackColor = RandColor();
    

    private Color RandColor()
    
        Random x = new Random();
                int r,g,b;
        Color myRgbColor = new Color();
        while(true)
        
            r = x.Next(0,255);
            g = x.Next(0,255);
            b = x.Next(0,255);
            if(!UsedColors.Contains( r + "," + g + "," + b ))
            
                UsedColors.Add( r + "," + g + "," + b );
                break;
            
        
        myRgbColor = Color.FromArgb( r , g , b );
        return myRgbColor;
    

【讨论】:

这不符合要求。它被要求为每一行使用不同的颜色。所以没有重复。但是,您的代码允许重复。 “点击”也不是问题的一部分。 您可以使用do-while 而不是带有条件中断的“无限”while 循环。无论如何,这应该可行。

以上是关于如何随机着色gridview(每行随机颜色)的主要内容,如果未能解决你的问题,请参考以下文章

随机色卡的 GridView

如何在Android Studio中随机生成一个字符串并为该字符串随机着色

Flutter GridView显示随机单词

Gridview背景颜色在Android中滚动时改变颜色

使用随机着色的单元格以5×5表格呈现

我正在尝试使用 JavaScript 生成随机颜色代码