J'ai une situation étrange lorsque les raccourcis clavier d'un bouton avec datagridview sont utilisés. Voici l'explication:DataGridView - Touches de raccourci Vs MouseClick pour Cell Focus
J'ai un winform dans lequel il y a un DataGridview et un bouton Save. Le bouton Enregistrer possède un raccourci clavier Alt + S. J'entre des lignes dans la grille et je valide toutes les cellules sur le bouton Enregistrer le clic et si la valeur de la cellule est invalide, je vais mettre le focus sur cette cellule. Voici le code utilisé pour y parvenir:
for (var index = 0; index < GridView.Rows.Count; index++)
{
var itemRow = GridView.Rows[index];
if (itemRow.Cells[SomeColumn.Name].Value.ToString() == string.Empty)
{
GridView.CurrentCell = itemRow.Cells[SomeColumn.Name];
GridView.Focus();
}
}
code ci-dessus fonctionne très bien et met l'accent dans la cellule particulière avec le curseur lorsque je clique sur le bouton Enregistrer. Mais, lorsque j'utilise une touche de raccourci, la mise au point n'est pas du tout définie sur la cellule. Je ne sais pas pourquoi il se comporte comme ça.
Par curiosité, j'ai testé un événement de datagridview. L'événement CellLeave de datagridview est déclenché lorsque je clique sur le bouton Enregistrer, mais lorsque j'utilise un raccourci pour enregistrer le bouton, il n'est pas déclenché.
Pourquoi se comporte-t-il ainsi? des entrées? Comment puis-je définir la mise au point lorsque j'utilise des raccourcis?
Mise à jour: J'ai fait un truc pour le faire correctement. J'ai ajouté le code SaveButton.Focus() dans l'événement de clic de bouton du bouton de sauvegarde en première ligne. Ceci est redondant mais oblige la grille à perdre le focus lorsque l'utilisateur utilise la touche de raccourci pour accéder à ce bouton. Cette solution fonctionne bien, mais pas sûr de ce qui pourrait être la raison de la situation ci-dessus. Toujours à la recherche d'une réponse :(
peut sembler une question stupide, mais il est juste pour être sûr: L'événement de clic de bouton est-il déclenché lorsque vous utilisez le raccourci? – Jla
@DrDro: Oui, il se déclenche :) – JPReddy
Basé sur le test d'événement CellLeave, je suppose que la grille ne perd même pas le focus, ce qui fait que la mise au point de cellule peut ne pas fonctionne correctement, c'est juste une supposition, mais il n'y a pas r eason pour pourquoi la focalisation des cellules ne fonctionne pas même dans ce cas. – JPReddy