如何随机着色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(每行随机颜色)的主要内容,如果未能解决你的问题,请参考以下文章