我正在使用以下代码,以便使用TextBox从用户获取Form的背景颜色,如果颜色与C#颜色匹配,则将Form背景颜色更改为用户输入的颜色,否则显示一条消息,颜色不存在。
问题是没有办法从包含颜色名称的字符串中读取颜色。所以我无法使用
Form1.ActiveForm.BackColor = Color.text
我该怎么做才能解决这个问题?
private void button1_Click(object sender, EventArgs e)
{
string text = textBox1.Text;
string[] colors = Enum.GetNames(typeof(System.Drawing.KnownColor));
for (int i = 0; i < colors.Length; i++)
{
if (colors[i] == text)
{
// Form1.ActiveForm.BackColor = Color.
MessageBox.Show("BackGround Color of Form Has Been Changed");
}
else
{
MessageBox.Show("Color You Entered Does Not Exist");
}
}
}
答案 0 :(得分:3)
您可以使用此类代码:
this.BackColor = (Color)new ColorConverter().ConvertFromString(textbox1.Text);
但优于TextBox
的是包含颜色的ComboBox
。您可以使用ComboBox
或任何其他颜色名称列表填充KnowsColor
:
comboBox1.DataSource = Enum.GetValues(typeof(KnownColor)).Cast<KnownColor>().ToList();
然后,当您想从ComboBox
获取所选颜色时:
if(comboBox1.SelectedIndex>=0)
this.BackColor = Color.FromKnownColor((KnownColor)comboBox1.SelectedValue);