我在WinForms编程。
我有一个ComboBox设置与初始灰色ForeColor。我的目标是在用户开始输入内容时更改此ComboBox的文本颜色。
我尝试使用_TextChanged
和TextUpdate
事件但不起作用。
private void ComboBox1_TextChanged(Object sender, EventArgs e)
{
ComboBox1.ForeColor = SystemColors.ControlText;
}
我已经使用事件_SelectedIndexChanged
在用户从下拉列表中选择项目时更改文本颜色,并且效果很好,但如果用户输入内容,文本仍然是灰色的(有一个与ComboBox关联的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;
}
答案 0 :(得分:3)
使用文本框触发的KeyUp,KeyDown或KeyPress个事件。您可能不希望KeyPress
用于此目的。文本已经更改时会触发TextChanged
,这就是为什么键入的新字符在订阅时没有不同颜色的原因。
答案 1 :(得分:2)
你看过KeyUp
事件吗? MSDN Keyup
您应该可以订阅此活动并在其中执行任何操作。