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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли создать массив для обращения к checkboxам 
:(
    Опции темы
SourceTV
Дата 27.3.2012, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!

Не подскажете ли Вы мне, могу ли я создать строковой массив, содержащий имена например чекбоксов, а потом обращаться ко всем чекбоксам через массив.
То есть, допустим у меня есть 10 чекбоксов с практически идентичными названиями (check1, check2, check3, ... , check10).
Я инициализирую массив
string[] str = new string[10];
int count = 1; // для дальнейшей работы с чекбоксами
for(int i = 0; i < 10; i++)
{
str[i] = "check" + (i+1);
}
после цикла массив будет содержать значения, эквивалентные именам чекбоксов.

Могу ли я как-нибудь использовать этот массив для обращения с чекбоксами?
То есть допустим мне нужно свойству content каждого чекбокса присвоить значение от 1 до 10. 
Чтобы не писать каждый раз код, подобный этому
check1.content = "1";
check2.content = "2";
check3.content = "3";
....
просто организовать цикл, в котором будут меняться значения.

Если есть какие-нибудь мысли, буду рад их прочесть!
Если же не понятно написал, напишите что именно, я разъясню!
PM MAIL   Вверх
RastaDja
Дата 27.3.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 5



Цитата(SourceTV @  27.3.2012,  12:23 Найти цитируемый пост)
могу ли я создать строковой массив, содержащий имена например чекбоксов, а потом обращаться ко всем чекбоксам через массив.

можно:)
Цитата(SourceTV @  27.3.2012,  12:23 Найти цитируемый пост)
Если есть какие-нибудь мысли, буду рад их прочесть!

есть
Код

for(int i = 0; i < count; ++i)
{
   CheckBox check = (CheckBox)LogicalTreeHelper.FindLogicalNode(rootElement, str[i]);
   // use check 
   check.content = "1";
}


Но я бы рекомендовал хранить не массив имен, а массив CheckBox-ов. Найти все чекбоксы можно так
Код

//   ...
//   глобальная коллекция
      private List<ChackBox> chackList = new List<ChackBox>();   //   коллекция чекбоксов
//   ...

//   поиск чекбоксов в контейнере
//   в параметер функции передаешь контейнер, например имья Grid
private void AddChackBoxToGlobalCollection(DependencyObject node)
{
   System.Collections.IEnumerable allObj = LogicalTreeHelper.GetChildren(node);
   foreach (Object obj in allObj)
   {
      //   перебор всех обьектов в дереве, и если это чекбокс, тогда записываем его в коллекцию
      switch (obj.GetType().ToString())
      {
         case "System.Windows.Controls.ChackBox":
         ChackBox RefChackBox = obj as ChackBox;
         chackList.Add(RefChackBox);
         break;
      }
      try
      {
         AddChackBoxToGlobalCollection(obj as DependencyObject);
      }
      catch   //  исключение, если обьект не есть контейнером
      {
      } 
   }
}


//   использование
for(int i = 0; i < chackList.Count; ++i)
{
   chackList[i].content = "1";
}


Код не компилил, выкусил из своего проекта. Если что не ясно, пишите.
Надеюсь разберетесь. удачи

Это сообщение отредактировал(а) RastaDja - 27.3.2012, 14:40


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
SourceTV
Дата 27.3.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо Вам огромное smile
И Вам удачи! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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