Ich habe eine Windows Form-Anwendung, die acht separate Fortschrittsbalken für acht unabhängige Aufgaben hat (progressBar0 - progressBar7). Ich möchte diese zu einer Liste in meinem Code hinzufügen, damit ich sie durchlaufen kann.Winform Fortschrittsbalken zu einer Liste hinzufügen
erkläre ich die Liste:
List<Control> progressBar = new List<Control>();
Jetzt iterieren ich meine Kontrollen durch und fügen Sie diejenigen, die "progressBar" in ihrem Namen enthalten:
foreach (Control control in Controls)
{
if (control.Name.Contains("progressBar")) { progressBar.Add(control); }
}
So weit so gut. Aber ich kann nicht die .Value Eigenschaft:
progressBar[0].Value == 100; <-- this doesn't work
Die oben wird nicht kompiliert und gibt Fehler „Control keine Definition für‚Wert‘enthalten“. Seltsamerweise kann ich, wenn ich intellisense verwende, einen Drilldown in progressBar durchführen und den Wert-Parameter finden. Aber aus irgendeinem Grund kann ich nicht programmatisch darauf zugreifen, und ich kann es auch nicht von der Beobachtungsliste abrufen.
kann ich den Wert durch AccessibilityObject zugreifen, sondern ist im String-Format und wird ärgerlich, mit zu arbeiten:
progressBar[0].AccessibilityObject.Value = "100%" <-- this works fine
Wenn ich jeden progressBar direkt zugreifen können, ist alles in Ordnung:
progressBar0.Value = 100; <-- this works fine
Was mache ich falsch?
'foreach (ProgressBar bar in Controls.OfType())' –