2017-02-24 107 views
1

我在WinForms中編程。
我有一個組合框與初始灰色ForeColor設置。我的目標是在用戶開始鍵入內容時更改此ComboBox的文本顏色。

ComboBox在輸入時更改文本顏色的事件

我試圖使用_TextChangedTextUpdate事件,但不起作用。

private void ComboBox1_TextChanged(Object sender, EventArgs e) 
{ 
    ComboBox1.ForeColor = SystemColors.ControlText; 
} 

我已經使用了Event _SelectedIndexChanged更改文本顏色,當用戶選擇下拉列表中的項目和它的作品很好,但文本爲灰色,如果用戶鍵入的東西(有是與Co​​mboBox相關聯的AutoCompleteCustomSource集合,因此用戶可以寫入而不是使用下拉列表)。

有什麼建議嗎?

編輯
我已經解決了這個辦法:

中註冊Form1.Designer.cs

this.ComboBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.ComboBox1_KeyUp);` 

使用此代碼:

private void ComboBox1_KeyUp(Object sender, KeyEventArgs e) 
{ 
    ComboBox1.ForeColor = SystemColors.ControlText; 
} 

回答

3

使用KeyUp,KeyDownKeyPress由文本框觸發的事件。您可能不希望KeyPress用於此目的。 TextChanged當文本已被更改時觸發,這就是爲什麼當您訂閱它時,輸入的新字符沒有不同的顏色。

+0

非常感謝@ user1895086! 雖然目前還不清楚KeyUp,KeyDown和KeyPress之間的區別,但我已經解決了這個問題:

1)在Form1.Designer中註冊。cs'
this.ComboBox1.KeyUp + = new System.Windows.Forms.KeyEventHandler(this.ComboBox1_KeyUp);使用此代碼

2)
私人無效ComboBox1_KeyUp(對象發件人,KeyEventArgs E) { ComboBox1.ForeColor = SystemColors.ControlText; } – Wiccio

2

你看過KeyUp事件嗎? MSDN Keyup

您應該可以訂閱此事件並在其中執行任何您想要的操作。

+0

非常感謝@tjcertified! 雖然尚不清楚,我KeyUp','KeyDown'和'KeyPress'之間'的區別,我已經解決了這個辦法:

1)在登記'Form1.Designer.cs'
this.ComboBox1 .KeyUp + = new System.Windows.Forms.KeyEventHandler(this.ComboBox1_KeyUp);使用此代碼

2)
私人無效ComboBox1_KeyUp(對象發件人,KeyEventArgs E) { ComboBox1.ForeColor = SystemColors.ControlText; } – Wiccio

+0

所有這些事件都是相關的。 KeyDown發生在您按下某個鍵時,KeyUp發生在您釋放密鑰後,而KeyPress發生在兩個以前的事件之後。 – tjcertified

+0

所以非常微小的差異。再次感謝您的解釋和您的時間。 ;) – Wiccio