Probleme de changement de texte d'un label [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007
-
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007
-
Bonjour,

Alors voilà, dans mon programme lorsque je clique sur le bouton Telecharger le texte du label devient "Telechargement en cours" et lorsque que je clique sur le bouton Pause/Reprendre il devient "Telechargement en pause" mais lorsque je reclique sur ce meme bouton le texte ne change pas alors qu'il devrait devenir "Telechargement en cours".

Voilà ce que j'ai ecris au debut de ma fonction Telecharger :



label3.Text="Téléchargement en cours";

label3.ForeColor = System.Drawing.Color.Red;



Mais si à la place j'ecris :



MessageBox.Show("Telechargement");


label3.Text="Téléchargement en cours";


label3.ForeColor = System.Drawing.Color.Red;



alors la message box s'affiche et le label change bien de texte !? Je n'y comprends rien.

Avez vous une idée svp ? (Promis apres j'arrete de vous emmerder ! )

4 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Bonsoir,
On peut forcer la mise à jour du label en appelant sa méthode Refresh :
myLabel.Refresh();

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

Merci Bidou, ça clos mon premier programme !
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
De rien !
En fait, un label et tout autre Control d'ailleurs se rafraichit "quand il a le temps". Comme la méthode Refresh appartient à la classe UserControl, on peut sans autre l'appeler pour n'importe quel contrôle (puisqu'ils dérivent tous de UserControl), pour forcer le refresh dudit contrôle...
On peut aussi agir à un niveau plus élevé, en appelant Application.DoEvents() pour traiter tous les messages qui sont encore dans la "queue".

On s'aperçoit facilement du résultat avec le petite morceau de code suivant :


for(int i=0; i<5000; i++) Console.WriteLine("first");
this.button1.Text = " CHANGER ";

//this.button1.Refresh();
//Application.DoEvents();
for(int i=0; i<5000; i++) Console.WriteLine("second");

Voilà bonne soirée.
A plus.

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
21
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
14 février 2007

Merci pour les explications !