2016-11-02 26 views
2

我使用以下代碼以便從用戶使用文本框獲取窗體背景的顏色,如果顏色與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"); 
    } 
    } 
} 
+3

您可以使用這樣的代碼:'this.BackColor = (Color)new ColorConverter()。ConvertFromString(textbox1.Text);'但比'TextBox'好一個包含顏色的'ComboBox'。 –

回答

3

您可以使用這樣的代碼:

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); 
+2

您可能希望排除「Transparent」之類的顏色,因爲「Form」不支持透明背色。 –

相關問題