0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
1

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

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

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

Хотелось бы задать переменную и играть с ее значениями в общем, а как это с чекбоксами правильно сделать я понять не могу
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2012, 23:38
Ответы с готовыми решениями:

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

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

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

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

12
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
04.11.2012, 23:54 2
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
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 00:06  [ТС] 3
gaw, вау, спасибо за быстрый ответ, постараюсь сейчас сделать то что хочу конечно, но если не сложно, не могли бы вы сделать какие-нибудь ремарки к коду, чтобы было немного понятнее.

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

Если пошлете в гугл - я вас пойму
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 00:27 4
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
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 00:34  [ТС] 5
gaw, так, теперь вроде понял, а если мне нужно просмотреть все контролы и при условии что в определенной группе есть флажки, то вывести мсджбокс, то как это будет выглядеть?
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 01:00 6
вывести что именно, имена где есть флажки?
0
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 01:03  [ТС] 7
gaw, вывести "успешно" else "не успешно" - это я знаю как сделать, вопрос в том, как сгрупировать чекбоксы в переменные в зависимости от их порядкового номера ...
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
05.11.2012, 01:16 8
не совсем понимаю суть
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
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 13
05.11.2012, 01:39  [ТС] 9
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 10
Пора бы выучить массивы!
0
11464 / 3757 / 675
Регистрация: 13.02.2009
Сообщений: 11,097
05.11.2012, 02:02 11
Если уж не создал сразу массив чекбоксов можно обращаться по номерам
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 12
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 13
Alex_Kib, самое просто решение, это использовать индекс компонентов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2012, 08:02
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru