通过文本框使用字符串改变表单的背景颜色

本文关键字:表单 改变 背景 颜色 字符串 文本 | 更新日期: 2023-09-27 18:15:55

我使用下面的代码,以便从使用TextBox的用户那里获得表单背景的颜色,如果颜色与c#颜色匹配,则将表单背景颜色更改为用户输入的颜色,否则它会显示一个消息,该颜色不存在。

问题是没有办法从包含颜色名称的字符串中读取颜色。所以我不能用

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

通过文本框使用字符串改变表单的背景颜色

您可以使用这样的代码:

this.BackColor = (Color)new ColorConverter().ConvertFromString(textbox1.Text);

但是比TextBox更好的是含有颜色的ComboBox。您可以使用KnowsColor或任何其他颜色名称列表填充ComboBox:

comboBox1.DataSource = Enum.GetValues(typeof(KnownColor)).Cast<KnownColor>().ToList();

然后当你想从ComboBox:

获得选定的颜色
if(comboBox1.SelectedIndex>=0)
    this.BackColor = Color.FromKnownColor((KnownColor)comboBox1.SelectedValue);