Как создать массив круглых индикаторов выполнения?

#c# #progress-bar

#c# #индикатор выполнения

Вопрос:

Я хотел бы знать, как я могу создать массив круговых индикаторов выполнения и получить доступ к его свойствам в массиве, например CircularProgressBar[i].text , CircularProgressBar[i].value и.
Я пытался использовать массив объектов, но я не могу получить доступ к свойствам кругового индикатора выполнения в цикле for , я также пытался сделать для массивов один типstring и в нем есть все CircularProgressBars.text , а другой — тип INT, который содержит CircularProgressBar.value , но это не сработало, в форме ничего не изменилось.

       CircularProgressBar.CircularProgressBar[] cbpArray = new CircularProgressBar.CircularProgressBar[] { shifts1.circularProgressBarNeeShift1, shifts1.circularProgressBarNeeShift2, shifts1.circularProgressBarNeeShift1 };
    public Form1()
    {
        InitializeComponent();    
    }
 

изображение

Ответ №1:

Хорошо, поскольку вы пытаетесь ссылаться на элемент, который находится в пользовательском элементе управления, вам нужно добавить средство доступа в ваш файл UserControl .cs. Я полагаю, что для вас это называется shift1.cs.

Примечание: cpb — это имя, которое я дал CircularProgressBar внутри UserControl shifts1.

 public partial class shifts1 : UserControl
{
    public CircularProgressBar.CircularProgressBar CPB
    {
        get
        {
            return cpb;
        }
        set
        {
            cpb = value;
        }
    }

    public shifts1()
    {
        InitializeComponent();
    }
}
 

Затем вы будете использовать имя для каждого пользовательского элемента управления из вашей формы. В моем случае я назвал свои formCPB1 и formCPB2.

 CircularProgressBar.CircularProgressBar[] arr = new CircularProgressBar.CircularProgressBar[]
        { formCPB1.CPB, formCPB2.CPB };
 

Как только у вас есть массив, вы можете получить к ним доступ, используя имя массива.

 arr[0].Text = "test";
arr[1].Text = "asdf";
 

Комментарии:

1. да, спасибо, но я столкнулся с другой проблемой, потому что мой циклический индикатор выполнения находится в пользовательском элементе управления, когда я хочу получить к нему доступ в моей общедоступной форме частичного класса, я получил сообщение об ошибке «инициализатор поля не может ссылаться на нестатическое поле», и если я создам статический экземпляр этого пользовательского элемента управления,ошибка исчезает, но в приложении form ничего не меняется,

2. Пожалуйста, опубликуйте некоторый код, чтобы мы могли повторить проблему.

3. Я обновил картинку, вы можете видеть, что я получил