2010-10-25 3 views
2

Я могу успешно создавать объекты динамически и называть их динамически. Пример: нажмите на холст, чтобы создать изображение с именем 'image1', щелкните в другом месте и создайте 'image2' и т. Д. Но после этого, что, если я хочу изменить атрибут на основе имени? В мои дни javascript я бы получилElementById ('image1'). Style.color = #ffffff;Создание или изменение динамического объекта C#?

Как насчет в C#? где «getElementById()», так сказать?

+2

Это WinForms? WPF? –

ответ

2

В Winforms вы можете использовать либо

Control c = Form1.Controls.Find("image1", true); 

или

int i = Form1.Controls.IndexOfKey("image1") 
Control c = Form1.Controls[i]; 

Для WPF вещи разные, это ТАК вопрос выглядит как это может быть полезно в том случае: How can I find WPF controls by name or type?

+0

Будет ли это работать в wpf? Кроме того, если я правильно понимаю, после настройки Control c, я могу сделать что-то вроде c.Text = "test"; ??? – Phil

+0

Нет, WPF отличается, но этот вопрос может помочь вам: http://stackoverflow.com/questions/636383/wpf-ways-to-find-controls И да, если у вас есть 'Control c', вы можете изменить текст, если хотите. – WildCrustacean

+0

Спасибо, я попробую, это похоже на правильный трек. – Phil

0

Я не знаю, правильно ли я вас понимаю.

Обычно, работая с технологиями, связанными с .NET, объекты живут внутри коллекций. Например, в проекте формы Windows элементы управления помещаются в коллекцию «Управление» (вы можете получить к ней доступ с помощью this.Controls).

Затем, как можно получить один конкретный объект? Зависит от того, что вы ищете. Все объекты имеют какое-то свойство, которое можно использовать в качестве идентификатора.

foreach (Control c in this.Controls) 
{ 
    if (c.ClientID == 'ID than I am looking for') 
     performsomeaction(); 
} 
Смежные вопросы