Я использую Infragistics UltraWinGrid v9.1.
Я хочу, чтобы пользователь мог вводить числовые данные в ячейку, нажмите Enter и затем сфокусируйтесь на ячейке ниже, как вы видите в Excel. Похоже, что событие KeyUp может быть лучше, чем событие KeyPressed для этого, но я продолжаю выдавать исключение, что я вышел за пределы 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 соответственно. Какой будет лучший подход?
Кстати, я могу сделать это снова в ячейке ниже, где значения currentRow = 1 и col = 28. Выдается то же исключение.