.net 从字符串“转换”;“是”;输入';布尔值';无效

.net 从字符串“转换”;“是”;输入';布尔值';无效,.net,string,visual-studio,visual-studio-2010,boolean,.net,String,Visual Studio,Visual Studio 2010,Boolean,我正在网上学习VisualBasic,但是我们刚换了一个老师,他们还没有回答我的问题。所以我想我最好在这里问一下。我们被要求制作一个只使用文本框、标签和按钮的计算机故障排除程序。我写了这段代码,但当我运行它时,我得到了这个错误“从字符串“Y”到类型“Boolean”的转换是无效的。”我不知道为什么或者如何修复它。谢谢你的帮助 Private Sub btnHelp_Click(sender As Object, e As System.EventArgs) Handles btnHelp.Cli

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

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

您在if条件下使用的是strBeep
。这是一个文本,无法转换为
布尔值

这样做:

 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
你的

应该是

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

是一个布尔运算符,在比较
strHDD=“Y”
得出true或false后对其进行计算。换句话说,你所写的并不意味着“如果两者都是Y”,而是意味着如果strBeep为true,strHDD为“Y”,这对编译器来说毫无意义,因为strBeep不是真值或假值。

一个更干净的方法是尽早转换文本框中的字符串。因此,与其将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

谢谢你,我做到了。如果他们能实现这个改变会更好,因为这样可以节省时间,而且他们都在检查同一件事。
If bBeep And bHDD Then
    'do something
Else If bBeep And Not bHDD
    'do something else
End If