CONTEXTE: J'ai une application WindowForms v3.5 avec un ensemble StatusStrip à utiliser comme TooStripStatusLabel. Je lui pose beaucoup de mises à jour pendant une tâche en cours, mais il y a des périodes notables où il est BLANK. Il n'y a pas de points lorsque j'écris un blanc sur l'étiquette de la bande d'état.Winforms StatusStrip - Pourquoi y a-t-il des périodes où il est vide lorsque je le mets à jour?
QUESTION: Toutes les idées pourquoi je verrions période où l'étiquette de la bande d'état est vide, quand je ne pense pas que ce soit?
Comment mettre à jour le:
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
PS. Appeler Application.DoEvents() après le this.Update() ne semble pas aider. Je demande en fait ce via le contrôle BackgroundWorker, donc:
(a) Je commence le travailleur de fond:
private void Sync_Button_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
DisableUpdateButtons();
}
(b) le travailleur de fond appelle les mises à jour:
private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
backgroundWorker1.ReportProgress(1, "Example string");
MainForm.MyC.SyncFiles(sender);
}
(c) La classe business MyC l'utilise aussi, par exemple
public void SyncFiles(object sender)
{
BackgroundWorker bgw = (System.ComponentModel.BackgroundWorker) sender;
bgw.ReportProgress(1, "Starting sync...");
.
.
.
}
(d) Cet événement, il capte:
private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
UpdateStatusStrip((string)e.UserState);
}
(e) Et encore une fois la mise à jour d'état bande
private void UpdateStatusStrip(string text)
{
toolStripStatusLabel1.Text = text;
toolStripStatusLabel1.Invalidate();
this.Update();
}
Est-ce que cette aide?
J'ai quelque chose de similaire. Il semble que l'étiquette soit vide lorsque le texte est trop long pour l'étiquette. Pas sûr d'une solution de contournement pour le moment. –