Enter 키 원인 초점을 눌러 Excel의 기본 동작처럼 아래 셀로 이동하려면 어떻게해야합니까?
-
20-09-2019 - |
문제
나는 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)
, 활성 행은 변경되지만 다음 셀은 편집 모드에 있지 않습니다.