powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Массив checkbox и управление ими
8 сообщений из 8, страница 1 из 1
Массив checkbox и управление ими
    #38598704
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня. Если честно, даже не знаю, как правильно сформулировать вопрос, но попробую.

Есть первый checkbox, имя - check0, его текст - "Выделить все".

Есть еще 50 checkbox, называются check1, check2, check3 и т.д.

Надо сделать такой алгоритм, например,

1. Если выделены все 50 check, то галочка "Выделить все" нажата, checkstate=checked
2. Если выделено 29 check, то галочка затемнена, т.е. ее checkstate=Indeterminate
3. Если выделено 0 check, то галочка не нажата, checkstate=unchecked

При загрузке формы изначально у меня получилось это реализовать. Примерно код такой:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim all_fields As Byte = 0
For i As Byte = 1 To 50
      For Each ctrl As Control In Me.GroupBox1.Controls
            If TypeOf ctrl Is CheckBox Then
               If CType(ctrl, CheckBox).Checked = True Then all_fields= all_fields + 1
            End If
      Next
Next



'--далее проверяю значение переменной all_fields, и в зависимости от ее значения проставляю check0

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
If all_fields = 50 Then
            check0.CheckState = CheckState.Checked
            check0.Text = "Все поля"
        ElseIf all_fields = 0 Then
            check0.CheckState = CheckState.Unchecked
            check0.Text = "Выделено полей: 0"
        ElseIf all_fields < 50 Then
            check0.CheckState = CheckState.Indeterminate
            check0.Text = "Выделено полей: " & all_fields
End If



Здесь все работает нормально, но мне надо сделать так, что при нажатии на любую из 50 галочек текст и значение check0 (как во втором куске кода) менялись, т.е. чтобы все это динамически работало.

Писать 50 событий CheckBox1_CheckedChanged как-то не хочется (да и думаю, что это неправильно), может есть какой-то другой универсальный способ. Очень надо. Помогите пожалуйста. Заранее спасибо.
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598710
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настенька,

Выход есть, написать ОДИН обработчик и присвоить его всем 50-ти checkbox-ам.
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598723
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, то по вашему мнению надо делать так:

Щелчок по первой check

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        check_state() '--процедура проверки
End Sub

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
        check_state() '--процедура проверки
End Sub



И так на все 50 check? 0_0.
Это я знаю, вообще-то вопрос звучал, как НАОБОРОТ ИЗВАВИТЬСЯ ОТ 50 СОБЫТИЙ CheckedChanged И СДЕЛАТЬ КАКОЕ-ТО ОДНО УНИВЕРСАЛЬНОЕ НА ВСЕ CheckBox_CheckedChanged?
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598726
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НастенькаЕсли я правильно понимаю, то по вашему мнению надо делать так:

Щелчок по первой check

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        check_state() '--процедура проверки
End Sub

Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
        check_state() '--процедура проверки
End Sub



И так на все 50 check? 0_0.
Это я знаю, вообще-то вопрос звучал, как НАОБОРОТ ИЗВАВИТЬСЯ ОТ 50 СОБЫТИЙ CheckedChanged И СДЕЛАТЬ КАКОЕ-ТО ОДНО УНИВЕРСАЛЬНОЕ НА ВСЕ CheckBox_CheckedChanged?Вы неправильно меня поняли...
Вот что я имел в виду:
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598733
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, это ПРОСТО ГЕНИАЛЬНО, как все оказалось просто, работает, спасибо вам огромное, моей радости нет предела. :-))
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598743
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, еще вопрос возник, а как в этой процедуре узнать имя checkbox, который я щелкнула?
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598753
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настенька,

sender для этого обработчику и передаётся
...
Рейтинг: 0 / 0
Массив checkbox и управление ими
    #38598845
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настенька,

а ещё для таких целей есть CheckedListBox
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Массив checkbox и управление ими
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]