代码之家  ›  专栏  ›  技术社区  ›  Robert DeSautel

vb.net复选框无效强制转换异常

  •  0
  • Robert DeSautel  · 技术社区  · 7 年前

    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 回复  |  直到 2 年前
        1
  •  2
  •   nayrangnu    7 年前

    在Visual Basic中, & performs a string concatenation And AndAlso 正如普卢托瓦所提到的。

    将是更好的选择,因为如果第一个条件失败,它将跳过对第二个条件的评估。例如,如果 txtFirstName.Text 长度为0时,程序不会费心检查 chkActive.CheckState 极小的 检查效率高一点 chkActive.CheckState 首先,因为这可能比评估快一点。