Аватар для Alex_Kib
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13

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

04.11.2012, 23:38. Показов 2207. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru