Progressbar en c#

Signaler
Messages postés
162
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
18 avril 2020
-
Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
-
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

Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
474
Bonsoir, ajout des balises de code.
Voir ici
Messages postés
15194
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 décembre 2020
474
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