C# Focus vs Select , 윈도우 폼 메서드 비교하기

C# 윈도우 폼에서 컨트롤은 Focus 메서드와 Select 메서드가 있습니다. 포커스나 셀렉트 메서드 모두 컨트롤을 활성화하는 측면에서 비슷해 보이는데, 구체적으로 어떠한 차이가 있는지 알아보도록 합니다.

Focus vs Select

포커스 메서드

포커스 메서드는 포커스 요청이 성공하면 참을 반환합니다. 마우스 커서가 깜빡거리지 않더라도, 시각적으로 컨트롤이 선택된 표시가 없더라도 포커스가 참인 경우가 있습니다.

셀렉트 메서드

셀렉트 메서드는 이름에서도 볼 수 있듯이 명확하게 해당 컨트롤을 활성화하라는 의미에서 사용합니다. 더불어 셀렉트 메서드는 Select(Boolean, Boolean)을 오버로드 하여 자식 컨트롤의 활성화를 설정할 수 있도록 지원합니다.

포커스와 셀렉트

포커스와 셀렉트의 공통점은 해당 컨트롤의 ControlStyles의 Selectable이 true가 되어야 한다는 것입니다. 그리하여 생성자 또는 로드 이벤트에서 포커스 메서드를 호출하는 경우 예상과 다르게 포커스가 되지 않는 것을 확인할 수 있습니다.

마이크로소프트는 포커스 메서드를 사용자 지정 컨트롤을 위한 하위 수준 메서드로 정의하고 있습니다. 그리하여 컨트롤의 활성화를 목표로 하는 것이라면 Select 메서드, ActiveControl 속성, Activate 메서드를 사용하도록 권장합니다. Load 등의 이벤트에서 원하는 컨트롤 활성화가 되지 않는다면 Activated 또는 Shown 등의 이벤트를 검토해 보세요.

Form form = new Form();
form.Select();
form.ActiveControl = new System.Windows.Forms.Control();
form.Activate();

댓글