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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
20 juil. 2011 à 18:11
Ha bien, je ne connaissais pas

Whismeril
0
Rejoignez-nous