Autocomplétion dans une cellule de datagridview

Largo357 Messages postés 9 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 juillet 2008 - 24 juil. 2008 à 18:07
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 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 ?

Merci beaucoup !
Largo

7 réponses

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
25 juil. 2008 à 12:11
faut que tu interviennes sur l'événement beginedit de la cellule du datagridview

-- Pourquoi faire simple quand on peut faire compliquer --
0
Largo357 Messages postés 9 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 juillet 2008 1
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.
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
28 juil. 2008 à 17:26
ben l'événement key_pressed alors

-- Pourquoi faire simple quand on peut faire compliquer --
0
Largo357 Messages postés 9 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 juillet 2008 1
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 11:04
je suis désolé mais le key_press existe pour le datagridview (je l'utilise dans mais programmes....) :
Protected

Overrides
Sub OnKeyPress(
ByVal e
As System.Windows.Forms.KeyPressEventArgs)

MyBase.OnKeyPress(e)

End
Sub

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 11:04
sinon tu as le key down ou key up au choix

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 11:07
ah mais ton problème est un peu chiant lol...
faut que tu regarde du coté du mode edit

-- Pourquoi faire simple quand on peut faire compliquer --
0
Rejoignez-nous