我正在制作Mastermind游戏,您需要在其中猜测颜色的暗码。
当我单击带有颜色的按钮以更改其他按钮的颜色时,我尝试使用它。因此,如果您单击红色按钮,它将把表单上的第一个按钮更改为红色,然后,如果您单击蓝色按钮,它将把表单上的第二个按钮更改为蓝色。
我之前曾尝试对此进行编码,但是我只使用了if语句,这很长而且根本不干净。尤其是涉及数百条语句时。
Button btn = (Button)sender;
if (btn.Text == "Red")
{
// I want it to automatically go to Colour2 next,
// instead of me having to write it a bunch of times
Colour1.BackColor = Color.Red;
}
我希望能够顺利浏览表单上的所有不同按钮并更改所有颜色。
谢谢您的帮助。
答案 0 :(得分:0)
以现有代码为例,您可以使用静态Text
方法将按钮上的文本解析为正确的枚举值(假设Enum.TryParse
值为已知的颜色枚举字符串),尝试将字符串解析为枚举。如果解析成功,它将返回true
并将out
参数设置为解析后的值:
Color selectedColor;
if (Enum.TryParse((sender as Button).Text, out selectedColor))
{
Colour1.BackColor = selectedColor;
}
如果您确定Text
属性将始终是有效的颜色(因为您可以控制它,所以应该使用该颜色),则可以使用静态{{1} }方法,它采用要返回的枚举类型和要解析的字符串值:
Enum.Parse
或者,您可以使用按钮的背景色本身来分配值(假设您将其设置为与文本相同的颜色),而不是使用Colour1.BackColor = Enum.Parse(typeof(Color), (sender as Button).Text);
属性:
Text