2016-12-06 72 views
0

我想允許用戶使用ColorDialog爲我的程序選擇背景顏色,但由於我的標籤文本顏色爲黑色,因此我想讓用戶無法從顏色對話框中選擇黑色以便顏色不會與我的標籤文字顏色重疊。有什麼辦法可以做到嗎?我也想過,如果用戶選擇了黑色帶來了一個錯誤信息,如下圖所示,但顏色對話框出現後,我再次選擇的顏色不會成爲我的窗體的背景色從顏色對話框中禁用顏色

if (color.ShowDialog() == DialogResult.OK) 
{ 
    if(color.Color == Color.Black) 
    { 
     MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
     color.ShowDialog(); 
    } 
    else 
    { 
     BackColor = color.Color; 
     backColor = color.Color; 
    } 
} 
+0

聽起來像'while',直到選擇了正確的'顏色'。 – Sinatr

+2

當您選擇黑色背景色時,您是否考慮切換爲光標文字顏色,而不是僅僅告訴用戶他們的選擇錯誤? –

+1

讓用戶爲表單選擇「BackColor」和「ForeColor」。這樣他們可以選擇他們想要的顏色組合。 –

回答

0

嘗試而不是使用如果對顏色檢查時:

if (color.ShowDialog() == DialogResult.OK) 
{ 
    while(color.Color == Color.Black) 
    { 
     MessageBox.Show("Color cannot be black", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
     color.ShowDialog(); 
    } 
    BackColor = color.Color; 
    backColor = color.Color; 
} 

這樣,除非你選擇的顏色不是黑色的,它會顯示一個錯誤信息,並再次打開ColorDialog類。 至於爲什麼重新打開對話框後顏色不會改變,這是因爲您只在else子句中更改背景顏色,因此如果您最初選擇黑色,則BackColor不會更改。 解決問題的另一種方法是,如果所選顏色爲黑色,則將標籤的顏色更改爲白色(選擇另一種顏色時,不要忘記將標籤文本更改爲黑色)。

+0

謝謝你們。 while循環爲我工作。我不能改變標籤的顏色,因爲我有很多形式,會說很多的時間 –

+0

@LimJunWei'ForeColor'和'BackColor'是環境屬性,如果你改變他們的基本形式,他們將改變所有控件。 –

+1

您應該檢查用戶是否按下了第二個ShowDialog調用中的取消按鈕。 – LarsTech