Saisie semi-automatique dans textbox [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 6 juin 2011
Statut
Membre
Dernière intervention
29 décembre 2014
-
Messages postés
16035
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 juin 2021
-
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!!

4 réponses

Messages postés
4
Date d'inscription
lundi 6 juin 2011
Statut
Membre
Dernière intervention
29 décembre 2014

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!!!
Messages postés
16035
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 juin 2021
551
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
Messages postés
15061
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 juin 2021
94
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...
Messages postés
16035
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 juin 2021
551
Ha bien, je ne connaissais pas

Whismeril