[Winforms] Tab키로 컨트롤 간 포커스 이동하기 > 온라인 스터디

본문 바로가기

Spread.NET

온라인 스터디

11. 기타 [Winforms] Tab키로 컨트롤 간 포커스 이동하기

페이지 정보

작성자 GrapeCity 작성일 21-11-17 16:09 조회 131회 댓글 0건

본문

스프레드시트에 포커스가 가게 되면, Tab키를 눌렀을 때 현재 포커스가 있는 셀의 바로 오른쪽 셀로 포커스가 이동하게 됩니다. 이런 경우 일반 컨트롤로 포커스를 이동하게 하려면 마우스로 다른 컨트롤을 클릭해야 합니다.

Spread.NET에서 제공하는 InputMap 클래스를 사용하여 Tab키의 동작을 변경함으로써, Tab키를 눌러 다른 컨트롤로 포커스를 옮길 수 있습니다. 본문에서 그 방법을 살펴보겠습니다.



InputMap이란?


InputMap은 키 눌림 이벤트와 object 간의 매핑을 제공합니다.

object는 키 눌림 시 수행될 동작이 될 수도 있고, 또는 그 동작을 지정하는 문자열이 올수도 있습니다. Ctrl + V를 눌렀을 때 "복사되어있던 내용이 붙여넣어지는 것"과 같이, 특정 키를 누르는 이벤트가 발생했을 때 수행될 동작을 지정하고 싶을 때 InputMap을 사용합니다.

InputMap에서 특정 키와 수행될 동작을 매핑할 때, Put 메소드를 사용합니다. Put 메소드의 매개 변수는 다음과 같습니다.

  • Keystroke keystroke: 키를 지정합니다.

  • object actionMapKey: 특정 키가 눌렸을 때 수행될 동작을 지정합니다.

inputMap.Put(keystroke, actionMapKey);

 

 

InputMap으로 Tab키 동작 변경하기


  1. 도구상자에서 FpSpread 컨트롤을 찾아 Form으로 두 번 가져온 후 크기를 적절히 조절합니다.

    AddSpread  

  2. InputMap 객체를 선언 및 초기화 합니다.

    InputMap im = new InputMap();

  3. Tab키에 대하여 Keystroke 객체를 선언 및 초기화합니다.

    KeyStroke 생성자의 매개변수를 다음과 같습니다.

    • Keys keyCode: 키 코드를 지정합니다.

    • Keys modifiers: 수정자 키(Ctrl, Alt, Shift)를 지정합니다.

    Keystroke k = new Keystroke(Keys.Tab, Keys.None);

  4. 첫번째 스프레드 컨트롤(fpSpread1)에 대하여 Tab키 동작을 설정해보겠습니다.

    먼저 GetInputMap 메소드를 사용하여 fpSpread1의 InputMap을 가져옵니다. GetInputMap 메소드의 매개변수로 하기 두 모드 중 하나를 입력하여, 해당 모드에서 적용되는 InputMap을 가져올 수 있습니다.

    • WhenFocused: 해당 컨트롤에 포커스가 있을 때 InputMap을 사용합니다.

    • WhenAncestorOfFocused: 해당 컨트롤 또는 자식 컨트롤에 포커스가 있을 때 InputMap을 사용합니다.

    im = fpSpread1.GetInputMap(InputMapMode.WhenAncestorOfFocused);

  5. InputMap의 Put 메소드를 사용하여 Tab키와 동작을 매핑합니다.

    Winforms는 기본적으로 Tab키를 눌렀을 때 컨트롤 간 이동이 발생합니다. 따라서 스프레드 컨트롤에서 제공하는 Tab키 동작이 발생하지 않게 함으로써 Winforms에서 제공하는 Tab키 동작(컨트롤 간 포커스 이동)이 이루어지게 할 수 있습니다.

    im.Put(k, SpreadActions.None);

  6. 다른 InputMap 모드에 대해서 4,5번 단계를 반복합니다.

    im = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
    im.Put(k, SpreadActions.None);

  7. 4~6번 단계와 동일한 내용으로, 두번째 스프레드 컨트롤(fpSpread2)에 대하여 Tab키 동작을 설정합니다.

    im = fpSpread2.GetInputMap(InputMapMode.WhenAncestorOfFocused);
    im.Put(k, SpreadActions.None);
    im = fpSpread2.GetInputMap(InputMapMode.WhenFocused);
    im.Put(k, SpreadActions.None);

  8. 코드를 실행하면, Tab키를 눌러 두 스프레드 컨트롤 간 포커스 이동이 가능한 것을 확인하실 수 있습니다.

    TabKeyAction


샘플을 다운로드하여 전체 코드를 확인해 보실 수 있습니다.

Tab키로 컨트롤 간 포커스 이동하기 - 샘플 다운로드




지금 바로 Spread.NET을 다운로드하여 직접 테스트해보세요!

spnet.png


  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

인기글

더보기
  • 인기 게시물이 없습니다.
그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2022 GrapeCity inc.