Как случайным образом раскрасить сетку (каждая строка случайным цветом)

1

Мне нужна помощь в решении этой задачи. Мне нужно покрасить каждую запись в gridview случайным образом с уникальным цветом.

Пример:

Предположим, что если у меня есть десять строк в gridview, я хочу, чтобы каждая строка была случайным образом окрашена в другой цвет.

Таким образом, результат должен быть как первый ряд, окрашенный в красный и второй строки желтым цветом и так далее.

Если я возьму 100 строк в gridview, все 100 строк должны быть окрашены однозначно.

Можете ли вы, ребята, помочь. заранее спасибо

  • 0
    У вас есть код для изменения цвета 1 строки в написанном GridView ? Если нет, то я бы начал с выяснения этого, а затем беспокоился о следующем шаге после.
  • 0
    Вы можете использовать эту библиотеку javaScript для генерации случайных цветов checkman.io/please
Теги:
gridview
random

2 ответа

2

Объедините эти два вопроса:

Как изменить цвет строки в datagridview?

Как генерировать случайные имена цветов в С#

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);
}
1

Попробуйте этот путь

    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;
    }
  • 0
    Это не соответствует требованиям. Было предложено иметь разные цвета для каждого ряда. Так что без дубликатов. Однако ваш код допускает дублирование. Также «щелчок» не был частью вопроса.
  • 0
    Спасибо, что указали на мои ошибки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню