Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/56: Рейтинг темы: голосов - 56, средняя оценка - 4.89
3 / 3 / 0
Регистрация: 22.06.2009
Сообщений: 17
1

Перебор контролов формы

31.01.2010, 00:43. Показов 10607. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем,
столкнулся с тривиальной задачей:
перебрать все контролы на форме включая дочерние,
но почему то элементы меню, ToolStripButton и т.п. как дочерние не воспринимаются,
кто нибуть сталкивался?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2010, 00:43
Ответы с готовыми решениями:

Перебор всех дочерних контролов программы
Здравствуйте. Есть форма, на форме расположены панели, табконтролы, лейблы и много всего. Хочу...

Стиль WS_EX_LAYERED и отображение контролов формы
Доброго времени суток. Нужно окно произвольной формы по заданному изображению с png файла....

Изменение контролов формы из стороннего класса
Добрый день! Помогите с пониманием решения задачи? Суть: 1. Есть public static class...

Как правильно получать данные из контролов другой формы
Доброго времени суток всем! Вопрос простой и просьба не ругать) Есть две формы form1 и form2 к...

9
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
31.01.2010, 16:11 2
Цитата Сообщение от Den1 Посмотреть сообщение
но почему то элементы меню, ToolStripButton и т.п. как дочерние не воспринимаются,
А разве они являются контролами?вроде в предках у них нету класса Control
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
01.02.2010, 07:20 3
см ниже
C#
1
2
3
4
5
6
7
8
9
10
            ToolStrip ts = new ToolStrip();
            ts.Items.Add(new ToolStripButton("Button1"));
            ts.Items.Add(new ToolStripButton("Button2"));
            ts.Items.Add(new ToolStripButton("Button3"));
 
            foreach (ToolStripItem tsi in ts.Items)
            {
                //Тут понятно
                //tsi.Text
            }
0
3 / 3 / 0
Регистрация: 22.06.2009
Сообщений: 17
01.02.2010, 11:22  [ТС] 4
Цитата Сообщение от d0s'A Посмотреть сообщение
см ниже
C#
1
2
3
4
5
6
7
8
9
10
            ToolStrip ts = new ToolStrip();
            ts.Items.Add(new ToolStripButton("Button1"));
            ts.Items.Add(new ToolStripButton("Button2"));
            ts.Items.Add(new ToolStripButton("Button3"));
 
            foreach (ToolStripItem tsi in ts.Items)
            {
                //Тут понятно
                //tsi.Text
            }
Видимо я не правильно поставил вопрос: допустим на форме 3 menuStrip, 4 toolStrip, и куча других элементов типа кнопок, label и т.п. Вопрос: можно ли перебрать все элементы, включая ToolStripItem, без проверки что это за элемент и без обращения к нему через items?
0
137 / 133 / 20
Регистрация: 03.02.2009
Сообщений: 606
01.02.2010, 16:27 5
Den1, я писал парктически для каждого свое...
C#
1
2
3
4
5
6
7
8
// для ToolStrimItemCollection и подобных классов
private void EnableItemsCollection<T>(T myItems) where T : ToolStripItemCollection
{
  for (int i = 0; i < myItems.Count; i++)
  {
     myItems[i]. // что хочешь сделать
  }
}
0
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
01.02.2010, 22:10 6
Вот пример из книжки...Сам не разбирался..Может поможет....
Вложения
Тип файла: rar Controls.rar (12.0 Кб, 209 просмотров)
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
03.02.2010, 07:55 7
Цитата Сообщение от Den1 Посмотреть сообщение
Видимо я не правильно поставил вопрос: допустим на форме 3 menuStrip, 4 toolStrip, и куча других элементов типа кнопок, label и т.п. Вопрос: можно ли перебрать все элементы, включая ToolStripItem, без проверки что это за элемент и без обращения к нему через items?
Класс ToolStripItem не является наследником от контрола. Поэтому через this.Controls и рекурсивно просматривать, у тебя конечно получится посмотреть все контролы. Но, еще раз скажу , ToolStripItem это не контрол и рекурсией ты до него не дойдешь. Поэтому если ты хочешь просмотреть все эти объекты, то рекурсия + просмотр items.
0
4 / 4 / 0
Регистрация: 31.01.2010
Сообщений: 27
11.02.2010, 19:57 8
Апну тему. Подскажите, будьте добры, и мне)

Есть форма, на ней десятка два контролов, допустим, чекбоксов. Все имеют имя вида checkBoxN, где N - номер чекбокса. Можно ли как-то из формы одним циклом проверить их все? Что-то вроде

for (int i = 1; i < 21; i++) if (checkBox(i).Checked) {}
0
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
12.02.2010, 06:49 9
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

На вскидку
C#
1
2
3
4
5
6
7
8
            foreach (Control c in this.Controls)
            {
                CheckBox cb = c as CheckBox;
                if (cb != null && cb.Checked)
                {
                }
 
            }
1
4 / 4 / 1
Регистрация: 20.02.2015
Сообщений: 24
09.02.2016, 20:34 10
Все можно сделать проще.
C#
1
TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox;
1
09.02.2016, 20:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2016, 20:34
Помогаю со студенческими работами здесь

Сохранение пропорций контролов при изменении размера формы
На форме 4 контрола. Как настроить dock и anchor, чтобы пропорции сохранялись при любом размере...

Создание формы и контролов(компонентов) в готовом приложении и сохранение их
Стряпаю тестирующее приложение которое могет кляпать эти тесты: создание формы, размещение...

Масштабирование размеров формы, контролов и шрифтов в зависимости от разрешения экрана
Есть некоторая форма приложения размером 1280 х 1024. Подскажите пожалуйста алгоритм, наподобие...

Изменение размеров контролов при открытии формы на весь экран
На форме естьTabCоntrol с несколькими страницами. На 1 странице - небольшая( по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru