Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8

Как обратиться к GroupBox в цикле ?

19.11.2019, 09:09. Показов 4094. Ответов 14

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как обратиться к группе Groupbox в цикле.
Фрагмент кода, который не работает:

VB.NET
1
2
3
4
5
6
7
8
'обратиться к элементам / GroupBox  /        
       For i As Integer = 2 To 4
            For Each c As Control In Me.Controls("GroupBox" & i).Controls
                If TypeOf c Is TextBox Then
                    AddHandler c.KeyPress, AddressOf TbxKeyPress
                End If
            Next
        Next i
Например, при обращении к конкретному Groupbox по имени всё работает

VB.NET
1
2
3
4
5
For Each c As Control In GroupBox4.Controls
            If TypeOf c Is TextBox Then
                AddHandler c.KeyPress, AddressOf TbxKeyPress
            End If
        Next
Посоветуйте литературу по данной теме, заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2019, 09:09
Ответы с готовыми решениями:

Обратиться к CheckBox, расположенному на GroupBox
Есть три кнопки, три группы, в каждой из которых по три чекбокса. У чекбоксов стоит параметр Tag, причём этот параметр одинаковый у...

Как обратиться к переменной в цикле?
вот код: If Drinks.n1 > i1 Then Drinks.n1 = Drinks.n1 - 3 If Drinks.n2 > i1 Then Drinks.n2 = Drinks.n2 - 3 If Drinks.n3 > i1 Then...

Как обратиться к нескольким CheckBox в цикле
Здравствуйте. Мне по очереди надо проверить 10 checkbox'ов. checkbox1 ...checkbox10. Могу ли я сделать это в цикле, обращаясь к...

14
1726 / 1583 / 165
Регистрация: 25.07.2015
Сообщений: 2,666
19.11.2019, 09:45
Лучший ответ Сообщение было отмечено SAE-2004 как решение

Решение

Цитата Сообщение от SAE-2004 Посмотреть сообщение
Здравствуйте, подскажите пожалуйста, как обратиться к группе Groupbox в цикле.
Фрагмент кода, который не работает:
По циклу у вас всё работает.
Проверяйте вот этот фрагмент
VB.NET
1
2
3
If TypeOf c Is TextBox Then
AddHandler c.KeyPress, AddressOf TbxKeyPress
End If
Миниатюры
Как обратиться к GroupBox в цикле ?  
2
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 10:09  [ТС]
Спасибо, Ваш пример наглядно демонстрирует, что работает, цвет изменен и цикл работает.
В чем тогда у меня ошибка?

вторая часть тоже работает отдельно, то есть с привязкой к конкретному имени Groupbox

Вторая часть
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TbxKeyPress(ByVal sender As TextBox, ByVal e As KeyPressEventArgs)
 
        'разрешен ввод только цифр, точки и запятой
        If (Not Char.IsDigit(e.KeyChar)) And Asc(e.KeyChar) <> 8 And e.KeyChar <> "," And e.KeyChar <> "." Then e.Handled = True
 
        'автоматическая замена точки на запятую для всех TextBox-ов
        Dim Ds As Char = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
        If ",.".Contains(e.KeyChar) Then
            e.KeyChar = If(",.".Contains(e.KeyChar), Ds, e.KeyChar)
        End If
 
    End Sub
0
1726 / 1583 / 165
Регистрация: 25.07.2015
Сообщений: 2,666
19.11.2019, 10:18
Лучший ответ Сообщение было отмечено SAE-2004 как решение

Решение

SAE-2004, стесняюсь спросить , а что вас смущает ?
В совокупности тоже всё работает.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i As Integer = 1 To 2
            For Each c As Control In Me.Controls("GroupBox" & i).Controls
                If TypeOf c Is TextBox Then
                    If TypeOf c Is TextBox Then
                        AddHandler c.KeyPress, AddressOf TbxKeyPress
                    End If
                End If
            Next
        Next i
 
 
    End Sub
    Private Sub TbxKeyPress(ByVal sender As TextBox, ByVal e As KeyPressEventArgs)
 
        'разрешен ввод только цифр, точки и запятой
        If (Not Char.IsDigit(e.KeyChar)) And Asc(e.KeyChar) <> 8 And e.KeyChar <> "," And e.KeyChar <> "." Then e.Handled = True
 
        'автоматическая замена точки на запятую для всех TextBox-ов
        Dim Ds As Char = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
        If ",.".Contains(e.KeyChar) Then
            e.KeyChar = If(",.".Contains(e.KeyChar), Ds, e.KeyChar)
        End If
 
    End Sub
End Class
Цитата Сообщение от SAE-2004 Посмотреть сообщение
В чем тогда у меня ошибка?
Да не вижу я у вас ошибок.
Цикл ваш полностью , внутрянку с цветом сделал просто для наглядности, т.к. не знал , что такое TbxKeyPress
Миниатюры
Как обратиться к GroupBox в цикле ?  
2
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 10:24  [ТС]
Вот такое сообщение)
Весь код в вопросе скопирован из формы...странно, буду пробовать.
Спасибо огромное за наглядный пример
Миниатюры
Как обратиться к GroupBox в цикле ?  
0
1726 / 1583 / 165
Регистрация: 25.07.2015
Сообщений: 2,666
19.11.2019, 10:30
Лучший ответ Сообщение было отмечено SAE-2004 как решение

Решение

Цитата Сообщение от SAE-2004 Посмотреть сообщение
Вот такое сообщение)
Проверьте номера GroupBox в названиях
Ошибка говорит о том , что контрола с таким названием нет.
Поставьте точку останова на начало цикла и пошагово (F10 или F11)
посмотрите на каком номере в названии контрола отваливается.
1
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 11:01  [ТС]
А если GroupBox расположен в TabControl это может быть ошибкой?

но когда я ставлю ссылку по конкретному имени (например, GroupBox1), то есть на тот же GroupBox в том же TabControl всё работает проблем нет.
0
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 11:16  [ТС]
вот так попробовал, форма одна и та же, имена не менял.
но все GroupBox расположены на TabControl
Миниатюры
Как обратиться к GroupBox в цикле ?  
0
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 11:31  [ТС]
С Вашей помощью по примерам понял в чем ошибка, цикл не работает если GroupBox лежит в TabControl
Не подскажите, как исправить ?
Заранее спасибо.
Миниатюры
Как обратиться к GroupBox в цикле ?  
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
19.11.2019, 11:41
Эту тему почитайте, там есть функция с перебором всех контролов.
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
19.11.2019, 13:03
SAE-2004,
Цитата Сообщение от SAE-2004 Посмотреть сообщение
цикл не работает если GroupBox лежит в TabControl
Ну да, так же, если бы он лежал в любом другом контейнере, если не заморачиваться, то обратиться можно так
VB.NET
1
2
3
 For Each c As Control In Me.TabControl1.Controls("TabPage" & i).Controls("GroupBox" & j).Controls
            MsgBox(c.Name)
        Next
2
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 14:33  [ТС]
Насчет циклов с Groupbox, которые лежат на форме стало всё понятно.
При обращении к конкретному Groupbox, который лежит в контейнере тоже стало понятно.

А вот как организовать цикл с Groupbox, которые лежат в контейнерах не совсем ясно.
Миниатюры
Как обратиться к GroupBox в цикле ?   Как обратиться к GroupBox в цикле ?  
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
19.11.2019, 14:48
SAE-2004, Используйте Control.Find
VB.NET
1
2
3
4
5
6
 For i = 1 To 3
            Dim grp As Control = Me.Controls.Find("Groupbox" & i, True).FirstOrDefault
            For Each c In grp.Controls.OfType(Of TextBox)
                c.Text = "Привет"
            Next
        Next
Миниатюры
Как обратиться к GroupBox в цикле ?  
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
19.11.2019, 14:51
В примере
GroupBox1 - на панели
GroupBox2 - на форме
GroupBox3 - в TabControl
1
0 / 0 / 0
Регистрация: 18.07.2019
Сообщений: 8
19.11.2019, 15:13  [ТС]
Orlangur1991, Огромное Вам спасибо!!!! Всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2019, 15:13
Помогаю со студенческими работами здесь

Как обратиться к нескольким CheckBox в цикле
Вопрос в следующем: возможно ли обращаться к объекту через индексы? К примеру: У меня есть штук 10 CheckBox'ов под именем...

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

Как обратиться к кнопке созданной в цикле?
Здравствуйте, пишу игру &quot;Жизнь&quot;, клетки реализую в виде кнопок, которые создаются в цикле(их 1600). Встала проблема, что необходимо...

Как обратиться к другим формам в цикле
Как обратиться к элементу Label в цикле придумал, получается что-то вроде этого: Form3.Controls(&quot;Label&quot; &amp; i).Caption =...

Как обратиться к нескольким Label в цикле
у меня на форме есть n-ое количество лейблов. я хочу к ним всем обратится чтобы изменить свойства. но не выходит. делаю по вот этому коду ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru