Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13

Как изменить состояние многих CheckBox на форме в один прием

04.11.2012, 23:38. Показов 2203. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи, наверное нубский вопрос, но если у меня есть 25 чекбоксов (0-24 соответственно), то
как мне перечислить их с 0 до 19, чтобы не писать все по очереди?

Хотелось бы задать переменную и играть с ее значениями в общем, а как это с чекбоксами правильно сделать я понять не могу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2012, 23:38
Ответы с готовыми решениями:

Позволить выбрать только один Checkbox из многих
В DataGridView есть столбец с CheckBox'ами. Необходимо обеспечить выбор только одного из них, при выборе другого, необходимо снять выбор с...

Изменить состояние Checkbox в таблице
Всем привет! Есть простая таблица из двух полей login и status поле (status содержит в себе либо 0 либо 1) так же поле status в...

Выключить большое количество CheckBox за один прием
Здравствуйте! В общем, имеется 30 CheckBox'ов, 3 столбца по 10 строк. В каждой строке должна стоять только 1 галочка. Заполняю их случайным...

12
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
04.11.2012, 23:54
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
Dim c As Control, k%
k = 0
For Each c In Me.Controls
 If TypeOf c Is CheckBox Then
    c.Caption = "Check" & k: k = k + 1
    c.Value = k Mod 2
 End If
Next
End Sub
1
 Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 00:06  [ТС]
gaw, вау, спасибо за быстрый ответ, постараюсь сейчас сделать то что хочу конечно, но если не сложно, не могли бы вы сделать какие-нибудь ремарки к коду, чтобы было немного понятнее.

Просто мне нужно знать как это работает, чтобы потом вразумительно обьяснять как это работает
Интересует Control и Me.Controls.

Если пошлете в гугл - я вас пойму
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 00:27
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
Dim c As Control, k%
k = 0
For Each c In Me.Controls 'в цикле по всех элементах управления на форме (Me===Form1)/' просматриваем все контролы)
 If TypeOf c Is CheckBox Then 'если тип контрола (ЭлУпр) есть CheckBox (или другой необходимый)
    c.Caption = "Check" & k: k = k + 1'то, например формируем надписи
    c.Value = k Mod 2                       'и (или) устанавливаем флажки
 End If
Next
End Sub
как то так
0
 Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 00:34  [ТС]
gaw, так, теперь вроде понял, а если мне нужно просмотреть все контролы и при условии что в определенной группе есть флажки, то вывести мсджбокс, то как это будет выглядеть?
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 01:00
вывести что именно, имена где есть флажки?
0
 Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 01:03  [ТС]
gaw, вывести "успешно" else "не успешно" - это я знаю как сделать, вопрос в том, как сгрупировать чекбоксы в переменные в зависимости от их порядкового номера ...
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 01:16
не совсем понимаю суть
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Command1_Click()
Dim c As Control, k%, ms$
k = 0
ms = ""
For Each c In Me.Controls
 If TypeOf c Is CheckBox Then
    If k >= 0 And k <= 19 Then
    c.Value = 1
    ms = ms & c.Name & "(" & k & ")" & vbLf
    k = k + 1
    End If
 End If
Next
MsgBox ms
End Sub
0
 Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 01:39  [ТС]
gaw, Суть в том, что я не хочу писать примерно такой код:
Visual Basic
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
28
29
30
31
32
Private Sub Command1_Click()
Dim а, b As Integer
A = 9
b = 0
If Check16.Value = 0 Or Check17.Value = 0 Or Check18.Value = 0 Or Check19.Value = 0 Or Check20.Value = 0 Then
MsgBox "Провально"
GoTo m
Else
    If Check1.Value = 1 Then b = b + 1
    If Check2.Value = 1 Then b = b + 1
    If Check3.Value = 1 Then b = b + 1
    If Check4.Value = 1 Then b = b + 1
    If Check5.Value = 1 Then b = b + 1
    If Check6.Value = 1 Then b = b + 1
    If Check7.Value = 1 Then b = b + 1
    If Check8.Value = 1 Then b = b + 1
    If Check9.Value = 1 Then b = b + 1
    If Check10.Value = 1 Then b = b + 1
    If Check11.Value = 1 Then b = b + 1
    If Check12.Value = 1 Then b = b + 1
    If Check13.Value = 1 Then b = b + 1
    If Check14.Value = 1 Then b = b + 1
    If Check15.Value = 1 Then b = b + 1
    
If b > 9 Then
MsgBox "Успешно"
Else
MsgBox "Провально"
End If
End If
m:
End Sub
Я хочу его укоротить. Как это можно сделать?
0
64 / 20 / 1
Регистрация: 29.07.2012
Сообщений: 151
05.11.2012, 01:56
Пора бы выучить массивы!
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
05.11.2012, 02:02
Если уж не создал сразу массив чекбоксов можно обращаться по номерам
Visual Basic
1
2
3
4
5
6
7
For i = 16 To 20
    If Me.Controls("Check" & i).Value = 0 Then MsgBox "Провально": Exit Sub
Next i
 
For i = 1 To 15
  If Me.Controls("Check" & i).Value = 1 Then b = b + 1
Next i
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 02:09
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Command1_Click()
Dim a As Integer
a = 9
Dim c As Control, k1%, k2%
 
k1 = 0: k2 = 0
For Each c In Me.Controls
 If TypeOf c Is CheckBox Then
  If c.Value = 1 Then
    If CInt(Mid(c.Name, 6)) < 16 Then k1 = k1 + 1
    If CInt(Mid(c.Name, 6)) >= 16 And CInt(Mid(c.Name, 6)) <= 20 Then k2 = k2 + 1
   End If
 End If
Next
 
MsgBox IIf(k2 > 0 Or k1 > a, "Успешно", "Провально")
End Sub
1
Заблокирован
05.11.2012, 08:02
Alex_Kib, самое просто решение, это использовать индекс компонентов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2012, 08:02
Помогаю со студенческими работами здесь

Изменить состояние нескольких CheckBox в цикле
На форме размешены 18 CheckBox'ов и самым порнографическим способом им присваивается значение параметра Visible True ...

Как объединить CheckBox'ы на форме в один массив или объект?
Всем привет. Задача следующая - Необходимо создать на форме пять checkbox'в и четыре кнопки. Первая кнопка должна устанавливать чётные...

Можно ли изменить состояние checkBox без срабатывания события CheckedCanged?
static class Class1 { public static int a = 0; } private void checkBox1_CheckedCanged(object sender,EventArgs e) // присвоение...

Как определить состояние CheckBox?
Мне нужно определить отмеченное состояние CheckBox. Как это сделать не знаю. Пробовал так: CheckBox1.Checked=true; и так пробовал: ...

Как сохранить состояние checkBox-a?
Есть две формы Form1 и Form2 на Form2 есть два checbox, когда я захожу на form2 активировать этот checBox не чего не происходит на form1 а...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru