IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Rafraîchissement d'un label immédiatement après click sur un bouton


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Hobby
    Inscrit en
    Août 2002
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Août 2002
    Messages : 128
    Points : 83
    Points
    83
    Par défaut Rafraîchissement d'un label immédiatement après click sur un bouton
    Bonjour !


    But
    Je souhaiterais modifier le texte d'un label qui affichera le nombre d'itérations possible d'un long calcul à effectuer.

    Problème
    Après divers essais, il apparaît que, dans le code minimal ci-après (form avec un bouton et un label),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void button1_Click(object sender, EventArgs e)
    {
       label1.Text = "Calcul en cours"; // Affichera le nombre d'itérations possible.
       // Calcul de 1 minute environ.
    }
    le label n'est modifié qu'une fois la méthode button1_Click quittée (visible en mode debug pas à pas), c'est à dire après l'accolade fermante.

    Ma question
    Comment faire pour que le texte du label soit modifié dès le clic, c'est à dire avant la fin de la méthode button1_Click, et non pas une fois la méthode quittée ?

    Merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    Mettre ton label dans un timer serai une solution à ton problème.

  3. #3
    Membre régulier
    Homme Profil pro
    Hobby
    Inscrit en
    Août 2002
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Août 2002
    Messages : 128
    Points : 83
    Points
    83
    Par défaut
    Merci pour la réponse, mais je ne vois pas comment un timer pourrait résoudre mon problème...

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Tout dépends ce que tu considères comme étant un calcul long ....... un exemple ????
    Dans le cas où il s'agit vraiment d'un long calcul requierant une MAJ de tes contrôles il existe le composant BackgroundWorker et les Delegates afin de ne pas freezer ton UI.

    A+

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    Label1.Refresh ?
    Sinon normalement un truc de plus de 200ms on le déporte sur un thread séparé pour ne pas figer l'interface (backgroundworker ou async ou autre...)

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 546
    Points
    10 546
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par #define Voir le message
    Comment faire pour que le texte du label soit modifié dès le clic, c'est à dire avant la fin de la méthode button1_Click, et non pas une fois la méthode quittée ?
    C'est structurellement impossible. Le thread UI est celui qui gère l'affichage. S'il est dans la méthode qui gère le clic, il ne peut pas mettre à jour l'affichage.

    La seule possibilité c'est de déporter le calcul dans un thread ou une task.

  7. #7
    Membre régulier
    Homme Profil pro
    Hobby
    Inscrit en
    Août 2002
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Août 2002
    Messages : 128
    Points : 83
    Points
    83
    Par défaut
    Merci à tous pour vos réponses.

    @wallace1 et Pol63 : le calcul dure au moins 2 minutes, mais il faut que j'optimise tout ça. Pour l'instant c'est du "brut de codage".

    @François DORIN : merci également pour l'explicatif du thread de l'affichage que je ne connaissais pas. Je vais donc utiliser un thread pour les calculs. C'est en cours !

Discussions similaires

  1. [Débutant] Ouvrir un bloc note après click sur un bouton
    Par vanderbel dans le forum C#
    Réponses: 18
    Dernier message: 22/02/2013, 14h31
  2. Creation tables apres click sur un bouton
    Par billyrose dans le forum Général JavaScript
    Réponses: 71
    Dernier message: 23/06/2009, 16h09
  3. [jTabbedPane] action apres click sur onglet
    Par tony_big_guy dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/12/2005, 00h29
  4. déclenchement d'un message box après click sur touche entrée
    Par new_wave dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 10h15
  5. Réponses: 2
    Dernier message: 26/07/2005, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo