Largo357
Messages postés9Date d'inscriptionmardi 1 juillet 2008StatutMembreDernière intervention29 juillet 2008
-
24 juil. 2008 à 18:07
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 2014
-
29 juil. 2008 à 11:07
Bonjour!
Voici mon problème:
J'ai un datagridview rempli par des données issues d'une base, et l'utilisateur peut y modifier ou y ajouter des enregistrements. J'aimerais que lorsque l'utilisateur commence à écrire dans une cellule, il s'affiche ce qui a déjà été rentré dans cette colonne, dans les lignes se trouvant plus haut. Cela s'appelle l'auto-complétion il me semble.
Apparemment, c'est facile à réaliser sur un combobox, mais savez-vous comment faire dans une cellule de datagridview (dont la colonne n'est pas une datagridviewcomboboxcolumn)? Avez-vous des codes déjà existants dont je pourrais éventuellement m'inspirer ?
L'idée serait de comparer le texte que l'utilisateur a déjà rentré avec des valeurs que j'ai à disposition, dès qu'une touche du clavier est enclenchée. Si ce que l'utilisateur a commencé à taper ressemble au début d'une valeur de comparaison, j'affiche cette valeur (comme quand vous cherchez dans google et que les anciennes recherches sont encore en mémoire). J'arrive à déclencher la comparaison quand une touche est appuyée, mais le problème est que même si la valeur dans la cellule a changé visuellement (l'utilisateur a tapé quelque chose), elle n'a pas changé pour le prog puisque l'utilisateur n'est pas passé à une autre cellule (différence entre "changed", et "changing"). Il faudrait donc pouvoir "valider" le contenu de la cellule à chaque fois que l'utilisateur tape une lettre (c'est à dire mettre à jour le contenu dès que l'évènement "tape sur clavier" survient). Avez-vous déjà rencontré ce problème ?
Largo357
Messages postés9Date d'inscriptionmardi 1 juillet 2008StatutMembreDernière intervention29 juillet 20081 28 juil. 2008 à 17:24
Merci pour cette réponse.
Mais beginedit intervient dès qu'on double clique sur la cellule. Ce n'est pas ça qui m'intéresse ! je voudrais que la cellule s'actualise à chaque fois qu'une touche est enfoncée. Pour l'instant , ma cellule de datagridview ne s'actualise que quand je passe à une autre cellule.
Largo357
Messages postés9Date d'inscriptionmardi 1 juillet 2008StatutMembreDernière intervention29 juillet 20081 29 juil. 2008 à 10:07
datagridview_keypressed ne fonctionne pas. mais bon, j'ai trouvé un autre moyen de déclencher l'interruption lorsqu'on appuie sur le clavier. mon plus gros problème est le suivant :
Quand l'évènement est déclenché (touche appuyée), je déclenche une comparaison des caractères déjà entrés dans la cellule avec une liste de mots. je prends donc la valeur de
datagridview.item(datagridview.currentcell.columnindex,datagridview.currentcell.rowindex).value que je compare. Le problème, en prenant datagridview.item().value, c'est qu'on a toujours la valeur initiale qu'il y avait dans la cellule, avant qu'on ne commence à modifier le contenu. la valeur de datagridview.item().value ne s'actualise que si je passe à une autre cellule. Il faudrait donc que je puisse actualiser le contenu de la cellule à chaque fois que j'appuie sur une touche du clavier, et ça, je ne sais pas comment le faire.
Merci beaucoup de prendre de votre temps,
Largo
Vous n’avez pas trouvé la réponse que vous recherchez ?