Я хочу поместить метки в массив при загрузке формы, но вместо того, чтобы кодировать их один за другим, я хочу использовать цикл for, но я не знаю, как это работает на С#.
Мой код:
Dates[0] = this.labelrect0;
Dates[1] = this.labelrect1;
Dates[2] = this.labelrect2;
Dates[3] = this.labelrect3;
Что я хочу сделать:
for(int n = 0; int > array.Count; c++)
{
Dates[n] = this.labelrect+n; //how do i concatenate n to labelrect?
}
если Dates
является Label[]
вы можете попробовать следующее:
for(int n = 0; n < array.Count; n++)
{
Dates[n] =(Label) Controls.Find("labelrect"+n, true)[0];
}
Обычно я помещаю указатель метки в свойство тега, после чего я затем перебираю через Control Collection с помощью тега, чтобы назначить элемент управления правильному индексу. Что-то вроде этого.
for (int i = 0; i < Controls.Count; i++)
{
if(Controls[i] is Label)
Dates[int.Parse(Controls[i].Tag.ToString())] = (Label)Controls[i];
}
Вы можете использовать свойство Controls
. Если у вас есть элемент управления Container
который содержит эти метки, вы можете получить коллекцию элементов управления, содержащихся в элементе управления, с помощью <ContainerID>.Controls
.
Control.Find()
возвращает массив элементов управления, совпадающих с заданным именем, поэтому мы должны рассмотреть первый элемент из массива.