2012-03-01 5 views
1

В моем приложении winforms я создаю элементы формы (Radiobutton, Label и т. Д.) Динамически. Мне нужно получить доступ к определенному элементу формы с его именем. Простым решением является итерация каждого элемента формы с помощью Form1.Controls и проверка его свойства имени. Но, на мой взгляд, это решение неэффективно. Можно ли получить доступ к определенному элементу формы с помощью отражения?Доступ к элементам формы динамически

+0

Можете ли вы дать аргумент, почему вы считаете, что итерирование детей менее эффективно, чем отражение? – Archeg

+0

Если вы используете .Net4, существует перегрузка индексатора Controls: form1.Controls ["ControlName"] –

ответ

4

Если у вас есть доступ к коллекции элементов управления можно использовать метод Find() при условии

myForm.Controls.Find("ControlName",true); 

Если вы знаете свой тип - вы можете бросить его, а

TextBox t = (TextBox)myForm.controls.Find("txtFirstName",false); 

Истинный или false будет инструктировать функцию для поиска любых дочерних элементов управления.

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