Enter 키 원인 초점을 눌러 Excel의 기본 동작처럼 아래 셀로 이동하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/2247979

문제

나는 Infragistics Ultrawingrid v9.1을 사용하고 있습니다. 사용자가 셀에 수치 데이터를 입력하도록 허용하고 싶습니다. 입력하다 그리고 Excel에서 볼 수 있듯이 아래의 셀에 초점을 맞추십시오. KeyUP 이벤트가이를위한 키 프레스 이벤트보다 나을 수 있지만, 전체 그리드의 맨 위에서 시작하더라도 Ultrawingrid의 한계를 넘어서는 예외를 계속합니다. 내가 시도한 코드는 다음과 같습니다.

    private void ugrid_KeyUp(object sender, KeyEventArgs e)
    {
        UltraGrid grid = (UltraGrid)sender;

        if (e.KeyCode == Keys.Enter)
        {
            // Go down one row
            UltraGridCell cell = grid.ActiveCell;
            int currentRow = grid.ActiveRow.Index;
            int col = cell.Column.Index;
            grid.Rows[currentRow + 1].Cells[grid.ActiveCell].Activate();
        }
    }

나는 이것이 셀을 같은 열에서 만들기를 기대했지만 아래의 행은 호출, grid.rows [currentrow + 1] .Cells [grid.ActiveCell] .Activate ();

대신 예외가 발생합니다.

유형의 'System.IndExoutOfRangeException'을 제외하고 Infragistics2.shared.v9.1.dll에서 발생했지만 사용자 코드에서 처리되지 않았습니다. 추가 정보 : 색인이 배열의 한계를 벗어났습니다.

내가 0 행에 있고 행 1이 존재하기 때문에 이것은 나에게 놀랍습니다. Currentrow와 Col의 값은 각각 0과 28입니다. 더 나은 접근 방식은 무엇입니까? btw 나는 아래 셀에서 다시 할 수 있습니다. 여기서 값은 currentrow = 1이고 col = 28입니다. 동일한 예외가 발생합니다.

도움이 되었습니까?

해결책

누군가가 외계인에 대한 내 질문에 대답했습니다 ...

    private void ugrid_KeyUp(object sender, KeyEventArgs e)
    {
        var grid = (UltraGrid)sender;

        if (e.KeyCode == Keys.Enter)
        {
            // Go down one row
            grid.PerformAction(UltraGridAction.BelowCell);
        }
    }

다른 팁

내가 말하는 것이 v9.1에도 유효한 지 모르겠지만 다음과 같은 일을 할 수 있습니다.

yourGrid.KeyActionMappings.Add(new GridKeyActionMapping(Keys.Enter, UltraGridAction.BelowCell, 0, UltraGridState.Row, SpecialKeys.All, 0));
 private void ulGrvProducts_KeyUp(object sender, KeyEventArgs e)
        {

            UltraGrid grid =  (UltraGrid)sender;

            if (e.KeyCode == Keys.Enter)
            {
                 //Go down one row
                grid.PerformAction(UltraGridAction.BelowCell);
            }
        }

사용 후 grid.PerformAction(UltraGridAction.BelowCell) , 활성 행은 변경되지만 다음 셀은 편집 모드에 있지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top