2017-02-03 5 views
1

Ich habe eine Anwendung, wo mehrere lange (Minuten) Aufgaben gleichzeitig im Hintergrund (d. H. Die gleiche Aufgabe für verschiedene Konten, einige Konten dauern länger als andere). Ich möchte einen Fortschrittsbalken und Statustext für jede Aufgabe parallel anzeigen. Ich vermutete, dass ich das in einem anderen Fenster zeigen könnte, wenn es viele solcher Accounts gäbe, aber im Moment ist das Szenario nur für 2-4 Accounts, daher würde ich gerne die Fortschrittsbalken in einem StatusStrip am unteren Rand des Mainstreams zeigen bilden. Ich denke, der StatusStrip sollte größer werden und ich würde ToolStripProgressBar und ToolStripStatusLabel eine dynamisch über die andere hinzufügen, basierend auf der Anzahl der Konten, die zu einem bestimmten Zeitpunkt verarbeitet werden. Ist das möglich? Ich habe überlegt, ein TableLayoutPanel innerhalb des StatusStrip zu verwenden, aber der Visual Studio-Designer lässt nur sehr wenige Komponenten zu einem StatusStrip hinzufügen. Gibt es ein Problem damit, dass ich das programmatisch hinzufüge?Mehrere Fortschrittsbalken in StatusStrip

+0

@RezaAghaei, warum hast du deine Antwort gelöscht, ich hatte gehofft, es bald auszuprobieren – Jimmy

+0

Weil ich keine Antwort erhalten habe, nachdem ich gefragt habe * Ist es nicht, was du meinst? * Aber wenn du Interesse an der Lösung, ich werde es wieder herstellen. –

+0

Sorry, ich wollte es versuchen, bevor ich die Antwort kommentiere. Danke für die Wiederherstellung. Es ist in der Tat, was ich meinte. – Jimmy

Antwort

1

Wahrscheinlich ist es kein intelligentes UI-Design, aber nur zu Ihrer Information, können Sie jedes Steuerelement mit ToolStripControlHost hinzufügen. Hier ist ein einfaches Beispiel, das Sie mehr hinzufügen StatusBar Steuerelemente in einem einzigen Punkt von StatusStrip mit Code läßt:

ToolStripControlHost host; 
FlowLayoutPanel panel; 
private void button1_Click(object sender, EventArgs e) 
{ 
    if (panel == null) 
    { 
     panel = new FlowLayoutPanel(); 
     panel.FlowDirection = FlowDirection.TopDown; 
     panel.WrapContents = false; 
     panel.AutoSize = true; 
     panel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 
    } 
    if (host == null) 
    { 
     host = new ToolStripControlHost(panel); 
     this.statusStrip1.Items.Add(host); 
    } 
    panel.Controls.Add(new ProgressBar() { /* Value = new Random().Next(0, 100) */ }); 
} 

enter image description here

Hinweis: Sie auch ToolStripControlHost erweitern können bieten Entwurfszeitunterstützung, zu Werfen Sie einen Blick auf How to: Wrap a Windows Forms Control with ToolStripControlHost.

Verwandte Themen