Probleme de changement de texte d'un label

Résolu
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 - 23 févr. 2005 à 18:52
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 - 23 févr. 2005 à 22:04
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 févr. 2005 à 19:14
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
3
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
23 févr. 2005 à 20:00
Merci Bidou, ça clos mon premier programme !
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 févr. 2005 à 20:56
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
0
ephilas Messages postés 21 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 14 février 2007 1
23 févr. 2005 à 22:04
Merci pour les explications !
0
Rejoignez-nous