vb.net флажок недопустимое приведение исключения
Мне не нравится это признавать, но я создаю winform vb.net, которая требует использования текстовых полей, флажков или переключателей для создания запроса SQL и возврата результатов. часть запроса sql работает фантастически, однако операторы select case, похоже, неправильно оценивают checkbox или radio checkstate.
Select Case True
Case txtFirstName.Text.Length > 0 & chkActive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(txtFirstName.Text)
dgvEmployees.Visible = True
Case txtFirstName.Text.Length > 0 & chkActive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(txtFirstName.Text, , , "Active")
chkInactive.Enabled = False
dgvEmployees.Visible = True
Case txtFirstName.Text.Length > 0 & chkInactive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(txtFirstName.Text, , , "Inactive")
chkActive.Enabled = False
dgvEmployees.Visible = True
Case txtLastName.Text.Length > 0 & chkActive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(, txtLastName.Text)
dgvEmployees.Visible = True
Case txtLastName.Text.Length > 0 & chkActive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(, txtLastName.Text, , "Active")
chkInactive.Enabled = False
dgvEmployees.Visible = True
Case txtLastName.Text.Length > 0 & chkInactive.CheckState
dgvEmployees.DataSource = employess.FindEmployee(, txtLastName.Text, , "Inactive")
chkActive.Enabled = False
dgvEmployees.Visible = True
Case txtEmpCode.Text.Length > 0 & rdbActive.Checked
dgvEmployees.DataSource = employess.FindEmployee(, , txtEmpCode.Text)
dgvEmployees.Visible = True
Case txtEmpCode.Text.Length > 0 & chkActive.Checked
dgvEmployees.DataSource = employess.FindEmployee(, , txtEmpCode.Text, "Active")
chkInactive.Enabled = False
dgvEmployees.Visible = True
Case txtEmpCode.Text.Length > 0 & chkInactive.CheckState = CheckState.Checked
dgvEmployees.DataSource = employess.FindEmployee(, , txtEmpCode.Text, "Inactive")
chkActive.Enabled = False
dgvEmployees.Visible = True
Case Else
MessageBox.Show("please enter an employee code, firstname or lastname")
End Select
Каждый раз, когда я отлаживаю, я получаю недопустимое исключение приведения для переключателя или флажка, я что-то упускаю?
1 ответ
В Visual Basic, &
выполняет конкатенацию строк Вы хотите использовать And
или же AndAlso
, как было упомянуто Плутониксом.
AndAlso
будет лучшим выбором, так как он пропускает оценку второго условия, если первое не выполняется. Например, если txtFirstName.Text
имеет длину 0, программа не будет проверять состояние chkActive.CheckState
, На самом деле, из-за этого, теоретически, может быть чуть-чуть эффективнее сделать проверку chkActive.CheckState
во-первых, потому что это, вероятно, немного быстрее, чтобы оценить.