Considérez 2 DataGridViews avec SelectionMode = RowHeaderSelect. Dans grid1 j'ai 2 colonnes; un TextBox et un CheckBox. Dans grid2 j'ai 2 colonnes; un ComboBox et un TextBox.DataGridView UserDeletingRow non déclenché
Lorsque je clique sur le RowHeader, le focus va sur la première cellule, pas sur RowHeaderCell. Lorsque j'appuie sur le bouton DEL, le contenu de la cellule est supprimé (le contenu de TextBox est effacé et ComboBox est réglé sur le 1er élément). De cette façon, l'événement UserDeletingRow ne se déclenche jamais comme le dit la FAQ DataGridView "Les utilisateurs peuvent supprimer des lignes uniquement lorsque la cellule actuelle n'est pas en mode édition, la propriété AllowUserToDeleteRows est définie sur" true ".
Pour contourner ce problème, je mis en œuvre ce code dans RowHeaderMouseClick
grid.CurrentCell = grid.Rows[rowIndex].Cells[columnName];
grid.Rows[rowIndex].Selected = true;
En cas de grid1 je passe le nom de la colonne de cases à cocher et l'événement se déclenche UserDeletingRow quand j'appuyez sur DEL. Cependant, pour grid2 passant le nom de la colonne ComboBox ne déclenche pas l'événement.
J'ai essayé ce qui suit:
1- Sélectionnez RowHeaderCell -> Exception car il ne peut pas être sélectionné.
2- grid.EndEdit() -> Aucun effet.
3- Changez le SelectionMode en FullRowSelect puis revenez à RowHeaderSelect -> Cell est en mode d'édition.
Ma question:
J'ai besoin de UserDeletingRow pour déclencher quelle que soit la colonne de la grille? Ou une solution de contournement pour sélectionner HeaderCell si possible?
Modifier (forme courte de la question):
En cliquant sur le RowHeader sélectionne la ligne et met la première cellule en mode édition, le cas échéant, de cette façon cliquant sur le bouton DEL efface le contenu de la cellule et ne se déclenche pas l'événement UserDeletingRow. Pour contourner le problème, je sélectionne une cellule, si disponible, qui ne peut pas être mise en mode édition, par ex. CheckBoxColumn.
Est-ce le comportement par défaut de cliquer sur le RowHeader? Si oui, pouvez-vous me montrer une solution de contournement? Si non pouvez-vous me signaler la cause de ce comportement?
Edit 2:
j'ai trouvé que la mise en EditMode à EditOnEnter fait en cliquant sur RowHeader mettre la première cellule en mode édition. Je vais essayer de surmonter cela, mais toute aide est appréciée.
Je suis content que vous l'ayez compris et que je puisse vous aider; -] – M2X