Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Доступ к элементу по имени


Автор: Keanor 19.6.2011, 14:53
В цикле было созданно несколько элементов (порядка 50)

Код

for (int i=0;i<30;i++) {
    Label label = new Label();
    label.Name = "label" + i;
}


Можно ли получить доступ к элементу зная его св-во Name не перебирая все контролы подряд?

Автор: dextermd 19.6.2011, 19:50
Лучше сделать массив из Label-ов и обращаться к ним по индексу.

Код

Label[] myLabels = new Label[30];

//инициализируем массив
for (int i = 0; i < myLabels.Length; i++)
{
    myLabels[i] = new Label();
}

//обращаемся к десятому элементу
myLabels[9].Name = "Hello World";


Автор: VirusUZ 28.6.2011, 12:07
Код

for(int i=0;i<this.Controls.Count;i++)
string name= this.Colntrols[i}.Name;

Автор: Экскалупатор 28.6.2011, 15:05
VirusUZ, это ты о чем написал?

Цитата(Keanor @  19.6.2011,  13:53 Найти цитируемый пост)
Можно ли получить доступ к элементу зная его св-во Name

да можно. коллекция Controls принимает либо индекс либо имя контрола:
Код

this.Controls["label2"].Text = "new Text";


только лучше проверять наличие этого контрола иначе будет ошибка, т.е. хотя бы так:
Код

if (this.Controls["label2"]!=null)
            {
                this.Controls["label2"].Text = "new Text";
            }

Автор: MrGOD 5.7.2011, 20:59
Лучше использовать Dictionary. Или еще как вариант PLINQ работает очень быстро, в несколько потоков.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)