! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

keyDown 관련 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 keyDown 관련

페이지 정보

작성자 물어버릴꺼야 작성일 2022-01-18 09:37 조회 2,222회 댓글 0건
제품 버전 : Spread.NET 14.2

본문

첨부파일


스프레드 상태가 읽기모드(ReadOnly) 경우에는 KeyDown 이벤트가 작동을 안 하는데 방법이 없는 건가요?



현재 키보드의 방향키 상, 하 버튼을 누르면 포커스가 이동되면서 해당 내역의 세부 내역을 불러오는 기능을



구현하고 있습니다... 클릭(CellClick) 이벤트는 작동되는데 키 다운 이벤트가 안되서 문의드립니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

1 답변

WinForms윈폼 Re: keyDown 관련

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK써니 작성일 2022-01-18 16:48 댓글 0건

본문

안녕하세요 그레이프시티입니다.


.NET Framework에서 키보드 입력을 처리할 때에는 사전처리 단계와 일반 처리 단계로 나누어지는데, 사전처리 단계에서 처리된 키 입력은 KeyDown, KeyPress, KeyUp 이벤트를 발생시키지 않습니다.

Spread 컨트롤에서 방향키 입력은 사전처리 단계에서 사용되기 때문에, KeyDown 이벤트를 발생시키지 않습니다.

따라서, 방향키 입력에 따른 동작을 구현하시기 위해서는 아래 두가지 방법 중 하나를 사용하실 수 있습니다.


1. DialogKey 이벤트 사용

DialogKey 이벤트를 사용하여 방향키 입력을 캡쳐할 수 있으며, 해당 이벤트 내에 원하는 기능을 정의하여 사용하실 수 있습니다.

하기 샘플 코드를 참고하여주시기 바랍니다.

private void Form1_Load(object sender, EventArgs e)
{
    // Spread의 활성 시트를 읽기모드로 설정합니다.
    fpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly;

    // Dialog 이벤트 추가
    fpSpread1.DialogKey += FpSpread1_DialogKey;
}
private void FpSpread1_DialogKey(object sender, FarPoint.Win.Spread.DialogKeyEventArgs e)
{
    // 위 방향키 입력시
    if (e.KeyData == Keys.Up)
    {
        FarPoint.Win.Spread.FpSpread fpSpread = (FarPoint.Win.Spread.FpSpread)sender;

        // 활성행을 이전 행으로 설정
        if (fpSpread.ActiveSheet.ActiveRowIndex != 0)
        {
            fpSpread.ActiveSheet.ActiveRowIndex -= 1;
        }

        // 상세 보기
        MessageBox.Show("ActiveRowIndex" + fpSpread.ActiveSheet.ActiveRowIndex);
    }

    // 아래 방향키 입력시
    else if (e.KeyData == Keys.Down)
    {
        FarPoint.Win.Spread.FpSpread fpSpread = (FarPoint.Win.Spread.FpSpread)sender;

        // 활성행을 다음 행으로 설정
        fpSpread.ActiveSheet.ActiveRowIndex += 1;

        // 상세 보여주기
        MessageBox.Show("ActiveRowIndex" + fpSpread.ActiveSheet.ActiveRowIndex);
    }
}


2. 방향키 동작 사용자 정의

읽기모드일 때 위아래 방향키 입력에 따른 사용자 정의 동작을 추가하여 원하시는 기능을 구현하실 수 있습니다.

샘플 코드를 첨부드립니다.

private void Form1_Load(object sender, EventArgs e)
{
    // Spread의 활성 시트를 읽기모드로 설정합니다.
    fpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly;

    // ReadOnly 모드에서의 위아래 방향키 입력과 ActionKey를 매핑합니다.
    FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();
    im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused, FarPoint.Win.Spread.OperationMode.ReadOnly);
    im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Up, Keys.None), "ShowPreviousRowDetail");
    im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Down, Keys.None), "ShowNextRowDetail");

    // ActionKey와 사용자정의 Action을 매핑합니다.
    ActionMap am = fpSpread1.GetActionMap();
    am.Put("ShowPreviousRowDetail", new ShowPreviousRowDetail());
    am.Put("ShowNextRowDetail", new ShowNextRowDetail());
}
private class ShowPreviousRowDetail : FarPoint.Win.Spread.Action
{
    public override void PerformAction(object source)
    {
        if (source is SpreadView)
        {
            SpreadView spread = (SpreadView)source;
            SheetView sheet = spread.Sheets[spread.ActiveSheetIndex];

            // 활성행을 이전 행으로 설정
             if(sheet.ActiveRowIndex != 0)
            {
                sheet.ActiveRowIndex -= 1;
            }

            // 상세 보여주기
            MessageBox.Show("ActiveRowIndex" + sheet.ActiveRowIndex);
        }
    }
}

private class ShowNextRowDetail : FarPoint.Win.Spread.Action
{
    public override void PerformAction(object source)
    {
        if (source is SpreadView)
        {
            SpreadView spread = (SpreadView)source;
            SheetView sheet = spread.Sheets[spread.ActiveSheetIndex];

            // 활성행을 다음 행으로 설정
            sheet.ActiveRowIndex += 1;

            // 상세 보여주기
            MessageBox.Show("ActiveRowIndex: " + sheet.ActiveRowIndex);
        }
    }
}

관련된 도움말 및 온라인 스터디 링크를 전달드립니다.

링크된 문서를 참고하여 주시기 바랍니다.

도움말 - 기본 키 입력 처리

온라인 스터디 - 키보드 상호 작용


다른 궁금한 점이 생기면, 문의 주시기 바랍니다.

감사합니다.

그레이프시티 드림


* 그레이프시티(GrapeCity)는 개발자를 위하여 ComponentOne(컴포넌트원), Spread(스프레드), ActiveReports(액티브리포츠), SpreadJS(스프레드JS), Wijmo(위즈모)와 같은 엑셀 스프레드시트 리포팅 그리드와 차트 등 다양한 종류의 .NET JavaScript(자바스크립트) 컴포넌트 툴을 생산하고있는 개발툴 전문 회사 입니다.


댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.