2016-07-21 1 views
5

확인란이 탭 순서 (0)의 첫 번째 컨트롤 인 경우 양식이 표시 될 때 포커스가 있음을 나타내지 않습니다. 실제로, 컨트롤을 확인/선택 취소하기 위해 스페이스 바를 눌러 초점을 맞 춥니 다. 탭을 누른 다음 Shift 키를 누른 채로 체크 상자로 돌아 가면 라벨이 강조 표시되어 초점을 나타냅니다. 확인란, 텍스트 상자 및 단추 컨트롤을 사용하여 새 양식을 만들어 쉽게 테스트 할 수 있습니다. 해당 순서로 설정된 탭 순서입니다. 양식을 시작하십시오. 체크 박스에 포커스가 있다는 표시는 없습니다. 탭 컨트롤을 사용하면 텍스트 상자로 돌아 가면 윤곽선이 그려집니다. 프로그래밍 방식으로 포커스를 Control.Focus() 및 Control.Select() 사용하여 폼을로드 및 표시된 메서드를 사용하여 시도했다.C# Winforms 포커스가 표시되지 않습니다.

양식을 시작할 때 체크 박스에 포커스가있는 것처럼 보이게하려면 어떻게해야합니까?

답변

6

이것은 일반적인 동작입니다. 앞에서 설명한 것처럼 컨트롤은 탭 순서의 첫 번째 컨트롤이고 포커스를받을 수 있으므로 인데 실제로 폼이 처음 표시 될 때 포커스됩니다.

문제는 since Windows 2000, the focus rectangles and underlined mnemonics have been hidden by default입니다. 키보드 인터페이스를 사용하여 프로그램과 상호 작용하기 전까지는 표시되지 않습니다. Alt 키를 누르기 만하면 나타나게 할 수 있습니다. 따라서 실제로는 Shift + 을 사용하고 있습니다.

아이디어는 Windows의 시각적 노이즈, 즉 포커스 표시기와 메뉴 및 창에서 키 밑줄에 액세스하는 것입니다. 심미적으로 이러한 것들은 산만하고 위협적입니다. 기능적으로 키보드로 탐색 할 때만 유용합니다. 마우스를 사용할 때 중요한 가치를 추가하지 않습니다. 실제로, 그들은 종종 중복됩니다.

지금 이유는 무엇입니까? 모든 좋은 일은 어딘가에서 시작해야합니다. Windows는보다 깨끗하고 단순 해 보일 것입니다.

[중 & hellip] 사용자가 키보드 탐색의 데모가있을 때 물론

, 키보드 지표는 다시 올 것이다. 표시기가 적절히 나타나고 사라집니다. 마지막으로, 동작이 마음에 들지 않으면 디스플레이 제어판에서 동작을 비활성화 할 수 있습니다.

아무 것도 잘못하지 않았습니다. Select 또는 Focus 또는 이와 동등한 프로그램 방식으로 사용하면 해당 포커스 사각형이 표시되지 않습니다. 제어는 이며 이미에 초점을 맞 춥니 다. 그 포커스 표시기가 표시 항상을 그래서

  1. 변경 시스템 설정 :

    은 당신이 가능하게 할 수있는 두 가지가 있습니다. 이 설정은 전역 설정이므로 응용 프로그램이 아닌 최종 사용자 만 조작해야합니다. 따라서 API 기능을 호출 할 필요가 없습니다. 제어판을 방문하십시오.

  2. 시스템에서 수행해야한다고 생각하는 것과 관계없이 컨트롤의 그리기 동작을 재정 의하여 강제로 포커스 표시기를 그립니다.당신은 완전히 소유자 그리기 컨트롤을하여이 작업을 수행 할 수 있지만, 그것은 단지 대신이 컨트롤 클래스를 사용하는 것이 더 쉬울 것입니다 :

    public class ForcedFocusCheckBox : CheckBox 
    { 
        protected override bool ShowFocusCues 
        { 
         get { return true; } 
        } 
    } 
    

을하지만 솔직히, 당신은 이러한 것들 중 하나를 수행해서는 안된다. 이것은 표준 플랫폼 규칙입니다. 내장 된 모든 대화 상자에서도 똑같은 일이 발생합니다. 사용자가 이미 모르는 경우에는 키보드 상호 작용이 많지 않으므로 스페이스 바를 눌러 첫 번째 체크 박스를 전환하지 않을 것입니다. 그들은 단지 마우스를 사용할 것입니다.

+0

위대한 답변과 설명! Unix COBOL에서 응용 프로그램을 이식하고 사용자가 어떤 컨트롤이 활성 상태인지 알 수 없다는 불만이 있으며 마우스를 느리게하면 마우스를 뻗기가 쉽지 않습니다. 그들은 단지 스페이스 바를 사용하여 체크 박스를 선택하고 Y/N 응답을 요구하지 않는 아이디어로 예열하고 있습니다 ... –

관련 문제