Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти объект по имени 
:(
    Опции темы
Vit
Дата 15.4.2007, 04:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Классическая задача: например есть калькулятор с кнопками, писать в коде что-то типа:

Код

button1.text="1";
button2.text="2";
button3.text="3";
button4.text="4";


По моему разумению моветон, как такие вопросы решаются в C#. Надо что-то типа:

НайтиОбъектПоИмени("button4").text="4";


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Hurricane
Дата 15.4.2007, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 3
Всего: 9



Если эти элементы - контролы на форме, то вызываешь у формы this.Controls["button4"].Text = "4";

Если не на форме - в общем случае помещаешь элементы в коллекцию, которая поддерживает нужный способ адресации (по имени, по индексу, хэшу, whatever you need), а дальше обращаешься к коллекции за нужным элементом.


Это сообщение отредактировал(а) Hurricane - 15.4.2007, 05:58
PM MAIL   Вверх
Idsa
Дата 15.4.2007, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Если придерживаться задачи написания калькулятора (т. е. Win-приложение), то в коде формы можно писать примерно так:
Код

((Button)this.Controls["button4"]).Text = "4";


Это сообщение отредактировал(а) Idsa - 15.4.2007, 05:59


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Vit
Дата 15.4.2007, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Для веб-формы это тоже работает и точно так же?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Дрон
Дата 15.4.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(Vit @  15.4.2007,  07:05 Найти цитируемый пост)
Для веб-формы это тоже работает и точно так же? 

Почему-то нет, но для веб есть метод FindControl как раз для поиска по имени.
Единственное надо помнить, он не рекурсивен, т.е. ищет только на одном уровне иерархии. Я обычно пишу свой метод, рекурсивно пробегающий по коллекции Controls и находящий по имени.

Например так:
Код
protected T GetControl<T>(Control startFrom, string name) where T : Control
{
      T result = null;
      foreach(Control ctrl in startFrom.Controls)
      {
             if (ctrl.Name == name)
             {
                   result = (T)ctrl;
             }
             else
             {
                    result = GetControl<T>(ctrl, name);
             }

             if (result != null)
             {
                     break;
             }
      }
      return result;
}


Ну а использовать соответственно:
Button btn1 = GetControl<Button>(this, "Button1");


--------------------
Да. Именно так.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.