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
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.