2017-02-24 109 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