Saisie semi-automatique dans textbox [Résolu]

zeneyassine 4 Messages postés lundi 6 juin 2011Date d'inscription 29 décembre 2014 Dernière intervention - 20 juil. 2011 à 02:54 - Dernière réponse : Whismeril 12118 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention
- 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
zeneyassine 4 Messages postés lundi 6 juin 2011Date d'inscription 29 décembre 2014 Dernière intervention - 20 juil. 2011 à 13:58
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de zeneyassine
Whismeril 12118 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 20 juil. 2011 à 07:38
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
BunoCS 14176 Messages postés lundi 11 juillet 2005Date d'inscription 19 octobre 2018 Dernière intervention - 20 juil. 2011 à 15:45
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
Whismeril 12118 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 octobre 2018 Dernière intervention - 20 juil. 2011 à 18:11
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.