【问题标题】:Conversion from string "Y" to type 'Boolean' is not valid从字符串“Y”到类型“布尔”的转换无效
【发布时间】:2012-02-25 07:02:08
【问题描述】:

我正在在线学习visual basic,但是我们刚刚换了老师,他们还没有回答我的问题。所以我想我不妨在这里问一下。我们被要求制作一个仅使用文本框、标签和按钮的计算机故障排除程序。我写了这段代码,但是当我运行它时,我得到这个错误“从字符串“Y”到类型“布尔”的转换无效。”我不知道为什么或如何解决它。感谢您的帮助。

Private Sub btnHelp_Click(sender As Object, e As System.EventArgs) Handles btnHelp.Click
        Dim strBeep As String
        Dim strHDD As String

        strBeep = Me.txtBeep.Text
        strHDD = Me.txtHDD.Text


        If strBeep And strHDD = "Y" Then
            Me.lblMessage.Text = "Contact tech support."

        ElseIf strBeep = "Y" And strHDD = "N" Then
            Me.lblMessage.Text = "Check drive contacts."

        ElseIf strBeep And strHDD = "N" Then
            Me.lblMessage.Text = "Bring computer to repair center."

        ElseIf strBeep = "N" And strHDD = "Y" Then
            Me.lblMessage.Text = "Check the speaker connections."
        End If
    End Sub
End Class

【问题讨论】:

    标签: .net string visual-studio visual-studio-2010 boolean


    【解决方案1】:

    一种更简洁的方法是尽早转换文本框中的字符串。因此,与其将 Dim strBeep 作为字符串,不如拥有:

    Dim bBeep As Boolean
    Dim bHDD As Boolean
    
    bBeep = (Me.txtBeep.Text = "Y")
    bHDD = (Me.txtHDD.Text = "Y")
    

    那么你的 if 语句如下所示:

    If bBeep And bHDD Then
        'do something
    Else If bBeep And Not bHDD
        'do something else
    End If
    

    【讨论】:

      【解决方案2】:

      您在 if 条件下使用 strBeep 而不将其与某物进行比较。这是文本,无法转换为boolean

      这样做:

       if strBeep = "Y" ...
      

      而不是

       if strBeep ...
      

      如果条件完成:

       If strBeep = "Y" And strHDD = "Y" Then
              Me.lblMessage.Text = "Contact tech support."
       ElseIf strBeep = "Y" And strHDD = "N" Then
              Me.lblMessage.Text = "Check drive contacts."
       ElseIf strBeep = "N" And strHDD = "N" Then
              Me.lblMessage.Text = "Bring computer to repair center." 
       ElseIf strBeep = "N" And strHDD = "Y" Then
              Me.lblMessage.Text = "Check the speaker connections."
       End If
      

      【讨论】:

      • 谢谢你这样做。如果他们实施该更改会更好,因为这样可以节省时间并且他们都在检查同一件事。
      【解决方案3】:

      你的

      If strBeep And strHDD = "Y" Then
      

      应该是

      If strBeep = "Y" And strHDD = "Y" Then
      

      And 是一个布尔运算符,在比较 strHDD = "Y" 的结果为真或假之后对其进行评估。换句话说,您所写的并不是“如果两者都是 Y”,而是意味着如果 strBeep 为真而 strHDD 为“Y”,这对编译器来说是没有意义的,因为 strBeep 不是真值或假值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        • 2021-05-05
        • 2013-10-31
        • 2011-07-30
        • 2015-02-09
        相关资源
        最近更新 更多