如何使按钮背景颜色彼此不同
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;
}
如果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;
}