Progressbar en c#

kina90 Messages postés 163 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 15 mars 2021 - Modifié par Whismeril le 16/03/2014 à 21:18
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 16 mars 2014 à 21:23
Bonjour,
Je suis débutante en c#, et j'ai réalisé un tp qui permet d'ajouter à l'aide d'un bouton "ajouter" dans une listview des nom, prenom et N° de téléphones saisi au clavier dans des textbox. Alors j'ai voulu améliorer mon TP et j'ai ajouté un bouton "rechercher" qui recherche dans lalistview un nom saisi par l'utilisateur, tout est bien marché. j'ai voulu qu'un progressbar qui se progress au moment de l recherche, s'il trouve l'enregistrement dans la listview il l'affiche et reinitialise le progressbar sinon il affiche un message,mais je ne sais pas comment faire ca :/ .est ce quelqu'un peut m'aider s'il vous plait?
Voici le code que j'ai fait mais ca ne marche pas, parceque le progressbar se declenche apres que la recherhe est terminé et après l'afichage du résultat
:
private void Rechercher_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;

            for (int i = 0; i < listView1.Items.Count; i++)
            {
                progressBar1.PerformStep();
                

                if (textBox3.Text == listView1.Items[i].SubItems[0].Text)
                {
                    
                    textBox1.Text = listView1.Items[i].SubItems[0].Text;
                    textBox2.Text = listView1.Items[i].SubItems[1].Text;
                    maskedTextBox1.Text = listView1.Items[i].SubItems[2].Text;
                    i = listView1.Items.Count - 1;

                }
                else
                {
                    if (i == listView1.Items.Count - 1)
                    {

                        MessageBox.Show("aucun enregistreent corrsespond à votre recherche");

                    }
                }
            }        
    
        }

        private void timer1_Tick(object sender, EventArgs e)
        {

            if (progressBar1.Value == progressBar1.Maximum)
            {
                progressBar1.Value = 0;
                timer1.Enabled = false;
            }
            else
             
            progressBar1.Value = progressBar1.Value + 1;

        }

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
16 mars 2014 à 21:18
Bonsoir, ajout des balises de code.
Voir ici
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
16 mars 2014 à 21:23
Bonsoir,

deux possibilités:

1 ta recherche va tellement vite, que la progressera passe de 0 à 100% de à une cadence imperceptible.
2 ta recherche est très longue, et bloque le processus de la form, on dit que ça fige, là il te faut passer par du multithreading (pas forcément pour une débutante), voir ce tuto
0
Rejoignez-nous