Je pense qu'il sera plus clair pour moi d'expliquer mon problème sans code pour l'instant:
voila plusieurs jours que je me débat avec un datagridview dans lequel une de mes colonne, et ce sur chaque ligne, possède un fameux DataGridViewComboBoxCell.
chaque cellule combobox possède son propre contenu. (il s'agit de noms de fichiers stockés dans un dossier spécifique)
j'y ai rajouté une ligne "..." permettant à l'utilisateur de rajouter une ligne à la combobox de son choix et donc importer un fichier dans le dossier lié à la cellule.
chaque ligne étant le nom d'un fichier, l'utilisateur peux :
- soit importer un fichier existant dont le nom respecte le bon formalisme (Openfiledialog + copy to)
- soit importer un fichier existant en donnant un nouveau nom de fichier au bon formalisme (Savefiledialog + copy to)
Tout ceci fonctionne très bien.
Mon soucis repose sur le dialogresult.NO (autant sur l'open que sur le save)
Si l'utilisateur annule j'aimerai que la valeur précédente de mon DataGridViewComboBoxCell ne change pas tout simplement...
Et je n'arrive a rien...
j'ai un peu fureté avant de venir vous solliciter et j'ai trouvé un event "combobox.enter" qui permet lors du clic sur la petite flèche d'un combobox de récupérer la valeur de tête avant qu'elle ne change (c'est exactement ce que je veux)
or, pour le DataGridViewComboBoxCell, cet event n'existe pas.
quelqu'un aurait il une idée pour récupérer la valeur précédente de mon contrôle au moment ou celle ci change ?
en remerciant par avance toute la communauté qui prendra le temps de lire mon soucis
mais peut-être qu'une des autres sera meilleure (j'ai supposé que tu étais en Windows Forms)
Edit: sur quel évènement tu appelles tes Dialog ? il faudrait enregistrer la valeur avant à ce moment (peut-être) et donc le remettre si dialogresult.no
Merci pour ta réponse, effectivement j'ai fini par passer par l'event CellClick du datagridview pour récupérer la valeur dans une variable privée de mon form actif. Quant aux dialog je les ouvre sur l'event CellValueChanged que j'ai un peu surchargé avec le CurrentCellDirtyStateChanged mais je n'ai pas su recuperer la valeur qui precede ce changement de value sur ces events la :/
pour pas que les events s'appellent les uns les autres des que je modifie ma liste j'ai du le remove en debut de traitement et je le remet en sortie de ma fonction recursive qui teste mes formats de nom de fichiers...
Je n'ai pas trouvé plus simple avec mes connaissances :/
voir si l'évènement CellValidating n'est pas mieux, on récupère la valeur avant modification via e.FormattedValue
N'oublie pas de vérifier que tu réagis bien à un clic ou un changement de valeur des cellules concernées (là tu réagis de la même façon quelque soit la colonne modifiée, mais c'est peut-être ce que tu veux faire)
DataGridViewComboBoxCell
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"Kaizoku oni ore wa naru !"
"Kaizoku oni ore wa naru !"