Barre de statut et de progression compatible multithread

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 063 fois - Téléchargée 34 fois

Contenu du snippet

Exemple de gestion de la barre de statut d'un formulaire compatible Multi-thread en Visual Studio 2005

Source / Exemple :


public FormGP()
        {
            InitializeComponent();
            // Gestion de la barre de progression
            ProgressBarAffiDelagate = new ProgressBarAffiDelagateDef(ProgressBarAffi);
            ProgressBarTimer = new System.Windows.Forms.Timer();
            // La progress barre à 100% reste 2.5 secondes
            ProgressBarTimer.Interval = 2500;
            ProgressBarTimer.Tick += new EventHandler(ProgressBarTimer_Tick);
            this.ProgressBarValue = -1;

            // Gestion du Status Label
            StatusLabelAffiDelagate = new StatusLabelAffiDelagateDef(StatusLabelAffi);
            StatusLabelTimer = new System.Windows.Forms.Timer();
            // L'affichage du texte reste 5s
            StatusLabelTimer.Interval = 5000;
            StatusLabelTimer.Tick += new EventHandler(StatusLabelTimer_Tick);
            this.StatusLabelValue = "";
        }

        #region Gestion de la barre de progression

        private delegate void ProgressBarAffiDelagateDef(int pValue);
        private ProgressBarAffiDelagateDef ProgressBarAffiDelagate;
        private System.Windows.Forms.Timer ProgressBarTimer;

        private void ProgressBarAffi(int pValue)
        {
            if (!this.toolStripProgressBar1.IsDisposed)
            {
                if (pValue < 0)
                {
                    this.toolStripProgressBar1.Value = 0;
                    this.toolStripProgressBar1.Visible = false;
                }
                else
                {
                    this.toolStripProgressBar1.Visible = true;
                    if (pValue >= 100)
                    {
                        this.toolStripProgressBar1.Value = 100;
                        this.ProgressBarTimer.Start();
                    }
                    else
                        this.toolStripProgressBar1.Value = pValue;
                }
            }
        }
        void ProgressBarTimer_Tick(object sender, EventArgs e)
        {
            this.ProgressBarValue = -1;
        }

        /// <summary>
        /// Valeur de la barre de progression multithread (-1) pour l'effacer
        /// </summary>
        public int ProgressBarValue
        {
            set
            {
                if (this.statusStrip1.InvokeRequired)
                    this.statusStrip1.Invoke(ProgressBarAffiDelagate, value);
                else
                    ProgressBarAffiDelagate(value);
            }
            get
            {
                return this.toolStripProgressBar1.Value;
            }

        }
        #endregion

        #region Gestion du Status Label

        private delegate void StatusLabelAffiDelagateDef(String pValue);
        private StatusLabelAffiDelagateDef StatusLabelAffiDelagate;
        private System.Windows.Forms.Timer StatusLabelTimer;

        private void StatusLabelAffi(String pValue)
        {
            if (!this.toolStripStatusLabel1.IsDisposed)
            {
                this.StatusLabelTimer.Start();
                this.toolStripStatusLabel1.Text = pValue;
            }
        }

        void StatusLabelTimer_Tick(object sender, EventArgs e)
        {
            this.toolStripStatusLabel1.Text = "";
        }

        /// <summary>
        /// Valeur Informative compatible multithread dans la barre de Status (Effacement automatique au bout de 5s)
        /// </summary>
        public String StatusLabelValue
        {
            set
            {
                if (this.statusStrip1.InvokeRequired)
                    this.statusStrip1.Invoke(StatusLabelAffiDelagate, value);
                else
                    StatusLabelAffi(value);
            }
            get
            {
                return this.toolStripStatusLabel1.Text;
            }
        }
        #endregion

A voir également

Ajouter un commentaire

Commentaires

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
une petite capture ? des mots clés ?
kahrakib
Messages postés
1
Date d'inscription
dimanche 22 juillet 2007
Statut
Membre
Dernière intervention
27 mai 2010
-
mzerci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.