2017-02-24 4 views
1

WinForms에서 프로그래밍 중입니다.
ComboBox에는 초기 회색 ForeColor가 설정되어 있습니다. 내 목표는 사용자가 무언가를 입력 할 때이 ComboBox의 텍스트 색상을 변경하는 것입니다.

입력시 ComboBox의 텍스트 색상을 변경하는 이벤트

나는 _TextChangedTextUpdate 이벤트를 사용해 보았지만 작동하지 않습니다.

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; 
} 

답변

3

텍스트 상자에 의해 실행 된 KeyUp, KeyDown 또는 KeyPress 이벤트를 사용하십시오. 이 목적으로 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)에 등록하는'
this.ComboBox1을 Form1.Designer.cs' .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

관련 문제