Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2014, 00:22   #1
Kartush
Пользователь
 
Регистрация: 07.02.2009
Сообщений: 20
По умолчанию C# поиск контролов на форме

Тема изъезженная. Но на форуме ответ не нашёл.
Есть форма, на ней лежат 3 trackbar'a и т.д. При нажатии на кнопку вызывается обработчик с кодом:
Код:
private void button3_Click(object sender, EventArgs e)
        {
            Control[] tr_bars2 = Controls.Find("trackBar", false);
            MessageBox.Show("" + tr_bars2.Length);
        }
Выводится 0.
Все трекбары создаются конструктором. Имена их trackBar1, trackBar2, trackBar3.
Если указать конкретно "trackBar1", то он находится нормально.

С Новым Годом!
Kartush вне форума Ответить с цитированием
Старый 03.01.2014, 00:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

в MSDN (тут) приведён такой примерно такой код:
Код:
  string allTextBoxValues = "";
            foreach (Control childc in Controls)
            {
                if (childc is TextBox)
                {
                    allTextBoxValues += ((TextBox)childc).Text + ",";
                }
            }
идея понятна?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.01.2014, 00:39   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

вопрос то в чем? Find ищет по кею, а не по совпадению, юзайте linq расширения
eval вне форума Ответить с цитированием
Старый 03.01.2014, 00:57   #4
Kartush
Пользователь
 
Регистрация: 07.02.2009
Сообщений: 20
По умолчанию

Serge_Bliznykov, да, конечно. Такого плана примеров я уже насмотрелся.
eval, вот как раз по совпадению и находит один контрол.
Я руководствуюсь этой страницей: http://msdn.microsoft.com/ru-ru/libr...v=vs.100).aspx.
key - Type: System.String. The key to locate in the Control.ControlCollection.
Извините, а всё же, что такое key?
Kartush вне форума Ответить с цитированием
Старый 03.01.2014, 01:08   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

key - это ключевая строка для выполнения поиска в Control.ControlCollection.
Streletz вне форума Ответить с цитированием
Старый 03.01.2014, 01:13   #6
Kartush
Пользователь
 
Регистрация: 07.02.2009
Сообщений: 20
По умолчанию

Так, ключевая строка. И как она должна выглядеть, чтобы Find вернул массив трекбаров?
В упор не понимаю...
Kartush вне форума Ответить с цитированием
Старый 03.01.2014, 03:28   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Find выполняет поиск по свойству Name, причём по точному совпадению.
Поэтому приёмы типа
Код:
sKey="trackBar*";
и им подобные в данном случае не работают.
Именно по этой причине в самом первом сообщении у Вас находится максимум один trackBar.

Поэтому для формирования массива с помощью Find необходимо использовать цикл и генерировать Key программно.
Либо использовать возможности основанные на свойстве Controls формы. Но и здесь без цикла дело не обойдётся, если не использовать LINQ.
Streletz вне форума Ответить с цитированием
Старый 03.01.2014, 12:00   #8
Kartush
Пользователь
 
Регистрация: 07.02.2009
Сообщений: 20
По умолчанию

А почему ж тогда Find возвращает массив, а не единичное значение?..
Kartush вне форума Ответить с цитированием
Старый 03.01.2014, 12:17   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

а почему он должен возвращать единичное значение?
eval вне форума Ответить с цитированием
Старый 03.01.2014, 12:53   #10
Kartush
Пользователь
 
Регистрация: 07.02.2009
Сообщений: 20
По умолчанию

Так я ничего понять не могу. Метод возвращает массив, который содержит одно значение. Какая должна быть ключевая строка, чтобы в результирующем массиве было несколько значений?
Kartush вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привязка контролов на форме в Gtk# Mixim Windows Forms 0 02.10.2012 13:32
группировка контролов на форме при редактировании m-d-k C++ Builder 3 09.07.2012 08:00
Поиск компонента на форме Dozent Общие вопросы Delphi 3 22.05.2012 13:14
Динамическое создание контролов на форме Access Yakut311 Microsoft Office Access 0 05.10.2011 14:10
Поиск компонентов на форме Des Общие вопросы Delphi 10 29.04.2009 11:17