2016-11-29 3 views
0

У меня есть приложение для окон, которое имеет восемь отдельных индикаторов выполнения для восьми независимых задач (progressBar0 - progressBar7). Я хочу добавить их в список в моем коде, чтобы я мог проходить через них.Добавление winform progressbars в список

Я объявляю список:

List<Control> progressBar = new List<Control>(); 

Теперь я перебирать мое управление и добавить те, которые содержат «ProgressBar» в названии:

foreach (Control control in Controls) 
{ 
    if (control.Name.Contains("progressBar")) { progressBar.Add(control); } 
} 

До сих пор так хорошо. Но, я не могу установить .value свойства:

progressBar[0].Value == 100; <-- this doesn't work 

выше не будет компилировать и дает ошибку «Контроль не содержит определение для„Value“». Как ни странно, если я использую intellisense, я могу перейти к progressBar и найти параметр Value. Но по какой-то причине я не могу получить доступ к нему программно, и я не могу получить его из списка часов.

я могу получить доступ к значению через AccessibilityObject, но в строчном формате и будет раздражать работать с:

progressBar[0].AccessibilityObject.Value = "100%" <-- this works fine 

Если я получить доступ к каждому Progressbar непосредственно, все в порядке:

progressBar0.Value = 100; <-- this works fine 

Что я делаю неправильно?

+2

'Еогеасп (ProgressBar бар в Controls.OfType ())' –

ответ

1

Вы используете список Control, который является базовым для всех элементов управления. Value - свойство, которое является специфическим только для некоторых элементов управления, в данном случае, ProgressBar.

Вы должны бросить его в ProgressBar:

var progressBars = new List<ProgressBar>(); 

foreach (var control in Controls) 
{ 
    // this ensure the type is a ProgressBar, unlike name, it cant be randomly assigned 
    if (control is ProgressBar) 
    { 
     // a cast is needed here 
     progressBars.Add(control as ProgressBar); 
    } 
} 

progressBars[0].Value = 100; 
+0

Именно то, что мне нужно было, не хватало актеров. – masospaghetti

Смежные вопросы