La magouille la plus simple, pour pas dire la seule que je connaisse, pour sélectionné une cellule d'un datagridview et activer l'édition par code est la suivante :
1 2 3
| MyDataGridView.Focus()
MyDataGridView.CurrentCell = MyDataGridView.Rows(rowIndex).Cells(cellIndex)
SendKeys.Send("{F2}") |
C'est à dire de simuler la touche du clavier qui active l'édition (F2) en l'occurrence.
Après, en regardant ton exemple avec du recule, le datagridview est normalement prévu pour éditer une collection d'objet (en ligne) dont les propriétés sont en colonne. Alors que dans ton exemple tu mets les propriétés en ligne et un objet (ou une collection de 1...) en colonne. Si c'est parfaitement réalisable techniquement avec le datagridview en mode non lié, ça devient très rapidement la foire aux emmerdes pour juste bénéficier d'une interface visuel à la "Excel Style" (marque déposée par moi-même).
En effet, la bonne pratique (enfin ma pratique personnelle on va dire) est plutôt d'utiliser des couples de label + contrôle monovaleur (textbox, maskedtextbox, combobox, datestimepicker) qui sont databinder sur une bindingsource. Surtout que dans ce cas la navigation d'un contrôle à l'autre à l'aide de la touche Tab s'effectue simplement à l'aide des propriétés Tabstop et Tabindex des contrôles.
Dans certains scénario et pour aller plus loin, on peut même imaginer récupérer le contrôle qu'utilise VisualStudio pour afficher/éditer les propriétés des objets dans le designer (PropertyGrid). Ce qui peut dans certains cas, et avec relative maîtrise dans l'art de coder ses objets métiers, offrir une technique "unifiée" pour la problématique d'édition de propriété d'un objet. Même si d'un point de vue design/graphique c'est aussi sexy qu'un terminal monochrome de l'administration sur Windows 3.1, voir un challenger de Java Swing UI.
Après ceux qui commence un projet Winforms de nos jours avec des contraintes artistiques sont juste un peu à côté de la plaque (ou hors-sujet comme nous disait le prof de philo en rendant nos dissertations avec une note binaire).
Bref je te laisse découvrir la documentation par toi-même.
http://www.dotnetperls.com/propertygrid
http://www.codeproject.com/Articles/...g-PropertyGrid
https://msdn.microsoft.com/en-us/library/aa302326.aspx
Partager