2012-02-25 142 views
0

我正在学习visual basic online,但是我们只是得到了一个老师开关,他们没有回答我的问题。所以我想我不妨在这里问一下。我们被要求制作一个仅使用文本框,标签和按钮的计算机故障排除程序。我写了这段代码,但是当我运行它时,我得到这个错误“从字符串”Y“转换为键入'Boolean'是无效的。”我不知道为什么或如何解决它。谢谢您的帮助。从字符串“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 

回答

0

您在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 
+0

感谢那些做了。如果他们实施这种改变会更好,因为这会节省时间,他们都在检查同样的事情。 – Photoshopper 2012-02-25 07:10:01

0

If strBeep And strHDD = "Y" Then 

应该

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

And是一个布尔运算符和比较strHDD = "Y"导致了真或假之后它的评估。换句话说,你所写的并不意味着“如果两者都是Y”,这意味着如果strBeep为真,并且strHDD为“Y”,那么编译器没有意义,因为strBeep不是真值或假值。

1

更简洁的方法是尽早从文本框中转换字符串。因此,不应昏暗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 
相关问题