InfragisticsUltraWinGridv9.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();
}
}
これにより、同じ列のセルが1行下になり、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です。同じ例外がスローされます。