Хобрук: Ваш путь к мастерству в программировании

Проверка флажков

Я новичок в программировании, у меня есть 3 флажка и 1 текстовое поле. Когда отмечены CheckBox1 и CheckBox2, текст в TextBox должен быть равен 1, иначе он должен быть равен 0.

Это мой код:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged,
    CheckBox2.CheckedChanged

    If CheckBox1.Checked And CheckBox2.Checked Then
       TextBox1.Text = 1
    Else
       TextBox1.Text = 0
    End If
End Sub

Это работает, за исключением случаев, когда я проверил все три из них, TextBox не изменился на 0 и по-прежнему равен 1. Как мне это решить? Я попытался изменить свой код на

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged,
    CheckBox2.CheckedChanged

    If CheckBox1.Checked And CheckBox2.Checked Then
       TextBox1.Text = 1
    ElseIf CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
       TextBox1.Text = 0
    Else
       TextBox1.Text = 0
    End If
End Sub

Можно ли сгруппировать все флажки в массив? Затем я посчитаю, если проверено более 2 флажков, и что-то сделаю.

05.12.2016

  • Попробуйте использовать Checkbox1.checked = True И Checkbox2.checked = True 05.12.2016
  • Включите Option Strict - это избавит вас от многих проблем (и простых вопросов SO). TextBox1.Text = 1 и тому подобное недопустимы 05.12.2016
  • @GNMercado Я пытался, но это не работает. 05.12.2016
  • @Plutonix Да, заранее спасибо :) 05.12.2016
  • @AAR Если бы я создал это, я помещал бы условие в событие нажатия кнопки для проверки. Это довольно просто. 05.12.2016
  • @GNMercado, какой смысл сравнивать один Boolean с другим Boolean, чтобы получить третий Boolean, когда можно просто использовать первый Boolean? CheckBox1.Checked = True оценивается точно так же, как CheckBox1.Checked, так в чем смысл сравнения? 05.12.2016
  • Недаром такая дилемма легко решается с помощью удобного и мощного отладчика, встроенного в VS. Установите точку останова и наблюдайте за выполнением кода. Используйте мышь для просмотра содержимого переменных. Вы узнаете многое о программировании. 05.12.2016

Ответы:


1

Дело в вашем заказе. В этом случае:

If CheckBox1.Checked And CheckBox2.Checked Then
   TextBox1.Text = 1
ElseIf CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
   TextBox1.Text = 0
Else
   TextBox1.Text = 0
End If

Это второе условие никогда не будет проверяться, потому что для того, чтобы оно было True, первое условие тоже будет True и уже совпало. Вам нужно поменять местами первые два условия:

If CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
   TextBox1.Text = "0"
ElseIf CheckBox1.Checked And CheckBox2.Checked Then
   TextBox1.Text = "1"
Else
   TextBox1.Text = "0"
End If

Вы также должны использовать AndAlso, а не And.

05.12.2016

2

Можно ли сгруппировать все флажки в массив? Затем я посчитаю, если проверено более 2 флажков, и что-то сделаю.

Создайте один обработчик, который срабатывает для всех трех флажков, указав каждый из них после ключевого слова "Handles" (прокрутите вправо, чтобы увидеть конец первой строки):

Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged

End Sub

Теперь подсчитайте, сколько флажков отмечено, и действуйте соответственно:

Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
    Dim CheckCount As Integer
    Dim CheckBoxes() As CheckBox = {CheckBox1, CheckBox2, CheckBox3}
    For Each CB As CheckBox In CheckBoxes
        If CB.Checked Then
            CheckCount = CheckCount + 1
        End If
    Next
    TextBox1.Text = If(CheckCount >= 2, 1, 0)
End Sub
05.12.2016
  • К сожалению, ОП довольно неясен. Этот код будет делать то, что было задано в последней строке, но эта последняя строка противоречит тому, что было задано ранее. 05.12.2016
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..