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 :

Problème de rafraichissement sur WinForm


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Par défaut Problème de rafraichissement sur WinForm
    Bonjour, j'ai fais une WinForm avec une progressBar et un label.

    Lorsque je l'appelle depuis une Form déjà affiché, la progressBar s'affiche et se rempli correctement (mais le label est comme transparent). Mais si je le fais depuis le OnLoad de la form principale, les 2 composants sont comme transparent et seulement lors de la fermeture de cette fenêtre (automatique à la fin du remplissage de la progressBar) que je vois la progreseBar remplie.

    Comment faire pour bien voir mes composants?

    Merci d'avance,

    Arsenic68

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Si tu mettais du code ça serait plus facile pour comprendre.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Si lors de l'éxécution en continu un traitement long , on veut voir la ProgressBar se mettre à jour, on peut :
    1. solution propre, exécuter le traitement dans un BackgroundWorker
    2. solution "quick and dirty", faire des Application.DoEvents() à chaque modification de la ProgresssBar.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     private void Form1_Load(object sender, EventArgs e)
            {
                this.Cursor = Cursors.WaitCursor;
                this.tabControl1.TabPages.Clear();
     
                F_Loading loading = new F_Loading();
                loading.Maximum = this._ucList.Count;
                loading.Show();
                for (int i = 0; i < this._ucList.Count; i++)
                {
                    IUC_Total iuc = this._ucList[i];
                    loading.Courant = i;
                    if (iuc is UC)
                    {
                        UC uc = (iuc as UC);
                        TabPage tp = new TabPage();
                        tp.Controls.Add(uc);
                        String tmp = uc.GetType().Name;
                        tp.Text = tmp.Substring(tmp.LastIndexOf("_") + 1);
                        uc.Dock = DockStyle.Fill;
     
                        this.tabControl1.TabPages.Add(tp);
                    }
                }
                loading.Close();
                this.tabControl1.SelectedIndex = selectedIndex;
                this.tabControl1_SelectedIndexChanged(null, null);
                this.Cursor = Cursors.Default;
            }
    C'est des traitements assez courts, le tout fait moins d'une minute (3 passages)
    C'est celui qui affiche que du blanc

    L'autre est encore plus court (mais il y a plus de boucle (~700)). A la fin de la lecture de mon Xml, je sauvegarde dans la base de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    F_Loading loading = new F_Loading();
                loading.Titre = "Chargement des Items";
                loading.Maximum = items.Count;
                loading.Show();
                for(int i=0;i<items.Count;i++)
                {
                    Item item = items[i];
                    try
                    {
                        loading.Courant = i;
                        this.Save(item);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                loading.Close();

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    l'éxécution en continu d'un traitement long
    "long" signifie quelques secondes, juste assez pour que l'utilisation d'une ProgressBar se justifie.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Par défaut
    Ben c'est bon ça se justifie mais pourquoi ça ne s'affiche pas?

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/10/2010, 15h34
  2. Problème de rafraichissement sur une animation
    Par Romich dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 25/05/2009, 20h16
  3. problème de rafraichissement sur un picturebox redéfini
    Par estacado dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/05/2009, 17h14
  4. Problème de localisation sur du Winforms
    Par LoDev dans le forum C#
    Réponses: 4
    Dernier message: 18/04/2008, 10h53
  5. Toujours un problème de rafraichissement de DBGrid
    Par tripper.dim dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h15

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