2017-10-03 4 views
0

그래서 시나리오에는 3 개의 텍스트 상자와 단추가있는 Form이 있습니다. 버튼을 클릭하면 textBox1.Enabled = false, textBox2.Enabled = false 및 textBox3.Focus()가 설정됩니다.비활성화 된 텍스트 상자에서 포커스 사각형 제거

enter image description here

내가 실행 해요 문제는 중을 textBox1 또는 TextBox2를 사용자가 버튼을 클릭하는 순간에 초점을 맞출 경우, 텍스트 상자가 무효가되어 있지만, 초점의 회색으로 버전을 유지한다는 것입니다 구형. 양식이 사용 중지 된 텍스트 상자를 다시 그리지 않는 것과 같습니다. 첨부 된 스크린 샷을 확인하고 첫 번째와 두 번째 텍스트 상자의 차이점을 확인하십시오.

포커스를 textBox3으로 이동하고 textBox1 주위에서 포커스 사각형을 제거하려면 어떻게합니까?

답변

1

이 동작이 버그인지 확실하지 않지만 처리 방법을 찾았습니다. 트릭은 BorderStyle 속성을 가지고 놀아 보는 것입니다.

private void button1_Click(object sender, EventArgs e) 
{ 
    textBox3.Focus(); 
    var borderStyle = textBox1.BorderStyle; 
    textBox1.BorderStyle = BorderStyle.None; 
    textBox2.BorderStyle = BorderStyle.None; 
    textBox1.Enabled = false; 
    textBox2.Enabled = false; 
    textBox1.BorderStyle = borderStyle; 
    textBox2.BorderStyle = borderStyle; 
    textBox1.Refresh(); 
} 
+0

고맙습니다. 이것은 도움이되지만 일종의 해킹을 느낀다. 가능한 경우이 문제에 대한 적절한 해결 방법을 찾고 싶습니다. 버튼 클릭시 텍스트 상자를 사용하지 않도록 설정하는 것은 Win Forms 세계에서 일반적인 기능이어야합니다. 나는 그런 벌레가 시간의 시험을 견뎌 낼 것이라고 믿기가 어렵다. –