J'utilise un Infragistics UltraWinGrid v9.1. Je veux permettre à l'utilisateur d'entrer des données numériques dans une cellule, appuyez sur Entrez et ensuite mettre l'accent sur la cellule ci-dessous, comme vous le voyez dans Excel. Il semble que l'événement KeyUp pourrait être meilleur que l'événement KeyPressed pour cela, mais je continue à lancer une exception que je suis allé au-delà des limites de l'UltraWinGrid même si je commence en haut d'une grille complète. Voici le code que j'ai essayé:Comment est-ce que je fais en appuyant sur la touche Entrée provoque le focus à déplacer à la cellule ci-dessous comme le comportement par défaut d'Excel?
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();
}
}
Je me attendais à ce faire la cellule dans la même colonne, mais une ligne ci-dessous pour devenir la cellule active à l'appel, grid.Rows [currentRow + 1]. Cellules [grid.ActiveCell] .Activate();
Au lieu de cela une exception est levée:
Une exception de type 'System.IndexOutOfRangeException' a eu lieu dans Infragistics2.Shared.v9.1.dll mais a été pas traitées comme dans le code utilisateur supplémentaire informations : Index était en dehors des limites du tableau.
Puisque je suis sur la ligne 0 et qu'il existe une ligne 1, c'est une surprise pour moi. Les valeurs de currentRow et col sont respectivement 0 et 28. Quelle serait une meilleure approche? btw Je peux le faire de nouveau la cellule ci-dessous, où les valeurs sont currentRow = 1 et col = 28. La même exception est levée.
Si vous utilisez cette "grid.PerformAction (UltraGridAction.EnterEditMode);" après le PerformAction, la cellule sera en mode d'édition. –