Saisie semi-automatique dans textbox [Résolu]

Messages postés
4
Date d'inscription
lundi 6 juin 2011
Dernière intervention
29 décembre 2014
- - Dernière réponse : Whismeril
Messages postés
12365
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2018
- 20 juil. 2011 à 18:11
Bonjour,
Comment puis-je faire une saisie semi-automatique dans textbox visual c#
j'ai besoin d'obtenir les données de saisie semi-automatique en interrogeant une base de données access.
Merci d'avance!!
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
4
Date d'inscription
lundi 6 juin 2011
Dernière intervention
29 décembre 2014
3
Merci
Bonjour,
Merci whismeril,
J'ai trouvé une solution:
J'ai modifié deux propriétés de mon TextBox : AutoCompleteMode "Suggest", et AutoCompleteSource "CustomSource".
ensuite dans l'événement Textchanged du TextBox, j'ai tapé le code suivant:
private void txt_fncin_TextChanged(object sender, EventArgs e)
{
oConn = new OleDbConnection(util.connectionPath);
try
{
oConn.Open();
}
catch
{
MessageBox.Show("Impossible de se connecter à la base de données", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
finally
{
OleDbCommand oComm = oConn.CreateCommand();
oComm.CommandType = CommandType.Text;
oComm.CommandText = "select * from client";
OleDbDataReader oData = oComm.ExecuteReader();
while (oData.Read())
{
txt_fncin.AutoCompleteCustomSource.Add(oData.GetString(0));
}

oData.Close();
oConn.Close();
}
}

et ca marche!!!

Merci zeneyassine 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de zeneyassine
Messages postés
12365
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,

il faut que tu charges ta base de données (au moins le champ que tu saisies) dans une List<T> ou un DataSet.

Dans l'évènement Changed (ou keypress, keyup...) du TextBox, tu dois chercher un enregistrement dans tes données (exemple avec List)
string ValeurRetournee = MaListe.Find(delegate (string MonTexte) {return MonTexte.Contains(MaTextBox.Text);});

Tapé de tête, il y a peut être des petites erreurs.
En gros tu cherches dans ta liste une valeur MonTexte qui contient le texte de la TextBox et tu la charges dans ValeurRetourne.

Ensuite tu affectes cette valeur à ton texte.
Pour que le texte rajouté soit sélectionné et permette à l'utilisateur de tapper une lettre de plus sans se poser de question, il faut se servir des propriétés SelStart et SelLenght de la TextBox.

Le problème de l'évènement Changed est que quand tu affectes ValeurRetournee à la propriété Text, tu repasses par cet évènement, il te faut donc le gérer (une variable bool par exemple).
Le problème du KeyPress (keyup aussi il me semble) est que le texte n'est pas encore affecté de la touche, donc il faut que tu la rajoute dans ta recherche.

En espérant t'avoir aidé.

Whismeril
Commenter la réponse de Whismeril
Messages postés
14275
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,
zeneyassine, peux-tu valider ta réponse si elle répond bien à ta demande?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Commenter la réponse de BunoCS
Messages postés
12365
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 décembre 2018
0
Merci
Ha bien, je ne connaissais pas

Whismeril
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.