如何使按钮背景颜色彼此不同

How to make buttons backcolor different from eachother

如果button2的BackColor与button1的颜色相同,如何改变它的BackColor?

我的程序如何运行?好吧,我必须按“开始”(按钮 5)来混合我的颜色,然后我按“检查”按钮才能看到答案。

正如您在图片中看到的那样,我有两个绿色按钮和两个橙色按钮,但我不希望任何 button.backcolors 相等。他们都应该是不同的。

换句话说,如果 button2.backcolor 和 button1.backcolor 相同,它应该混合其背景色直到变得不同。我唯一允许使用的颜色是绿色、红色、蓝色、紫色、橙色、黄色

有什么办法可以实现吗?

Random random = new Random();

List<Color> possibleColors = new List<Color>()
{
    Color.Red,
    Color.Green,
    Color.Orange,
    Color.Blue,
    Color.Purple,
    Color.Yellow,       
};

private Color GetRandomColorOfLoist()
{
    return possibleColors[random.Next(0, possibleColors.Count)];
}

private void button5_Click(object sender, EventArgs e)
{
    button1.BackColor = GetRandomColorOfLoist();
    button2.BackColor = GetRandomColorOfLoist();
    button3.BackColor = GetRandomColorOfLoist();
    button4.BackColor = GetRandomColorOfLoist();
    button1.Visible = false;
    button2.Visible = false;
    button3.Visible = false;
    button4.Visible = false;
}

private void button6_Click(object sender, EventArgs e)
{
    button1.Visible = true;
    button2.Visible = true;
    button3.Visible = true;
    button4.Visible = true;
}

编辑 1

Arul Manivannan 的想法可行,但在按下开始和检查后,如果我再次按下开始,游戏就会崩溃。我的最后一个问题是,如何在单击检查按钮 (button6) 后隐藏开始按钮 (button5)?

我的代码:

  Random random = new Random();

   List<Color> possibleColors = new List<Color>()
{
    Color.Red,
    Color.Green,
    Color.Orange,
    Color.Blue,
    Color.Purple,
    Color.Yellow,

    };


        private Color GetRandomColorOfLoist()
        {

            int index = random.Next(0, possibleColors.Count);
            Color ColorToReturn = possibleColors[index];
            possibleColors.Remove(possibleColors[index]);

            return ColorToReturn;



        }

        private void button5_Click(object sender, EventArgs e)
        {
            button1.BackColor = GetRandomColorOfLoist();
            button2.BackColor = GetRandomColorOfLoist();
            button3.BackColor = GetRandomColorOfLoist();
            button4.BackColor = GetRandomColorOfLoist();
            button1.Visible = false;
            button2.Visible = false;
            button3.Visible = false;
            button4.Visible = false;

            List<Color> possibleColors = new List<Color>()
{
    Color.Red,
    Color.Green,
    Color.Orange,
    Color.Blue,
    Color.Purple,
    Color.Yellow,


        };
        }

        private void button6_Click(object sender, EventArgs e)
        {
            button1.Visible = true;
            button2.Visible = true;
            button3.Visible = true;
            button4.Visible = true;

        }

编辑 2

好的,我知道了。感谢帮助

只需从可能的颜色列表中删除从 GetRandomColorOfLoist 返回的颜色。在 button5_Click 开始时,您必须再次重新填充可能的颜色列表。然后它应该工作。

为了不重复颜色,从列表中删除颜色项如何?

     private Color GetRandomColorOfLoist()
      {
        int index = random.Next(0, possibleColors.Count);
        Color ColorToReturn = possibleColors[index];
        possibleColors.Remove(possibleColors[index]);

        return ColorToReturn;
      }