Saisie semi-automatique dans textbox

Résolu
zeneyassine
Messages postés
4
Date d'inscription
lundi 6 juin 2011
Statut
Membre
Dernière intervention
29 décembre 2014
- 20 juil. 2011 à 02:54
Whismeril
Messages postés
17471
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 juin 2022
- 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!!

4 réponses

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

20 juil. 2011 à 13:58
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!!!
3
Whismeril
Messages postés
17471
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 juin 2022
599
20 juil. 2011 à 07:38
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
0
BunoCS
Messages postés
15266
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 juin 2022
103
20 juil. 2011 à 15:45
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...
0
Whismeril
Messages postés
17471
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 juin 2022
599
20 juil. 2011 à 18:11
Ha bien, je ne connaissais pas

Whismeril
0