Visual Basic中If和Else语句的问题

时间:2012-02-18 21:42:56

标签: vb.net

我正在构建一个随机生成数字的程序,然后这个数字链接到一个图片,显示在图片框中。我有一个在它下面有一个文本框,其中一个图片是可变的,具体取决于这个文本框的内容,所以我使用了一些if和else语句。但我得到这个错误,'Else'必须先匹配'If'或'ElseIf'。可能有一个简单的解决方案,我只是没有看到,这是代码。

Private Sub Button9_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Timer1.Start()
    Dim key As Integer
    key = (Rnd() * 3)
    Select Case key
        Case 1
            Label14.Text = "Assault"
        Case 2
            Label14.Text = "Support"
        Case 3
            Label14.Text = "Specialist"
    End Select
    If Label14.Text = "Assault" Then
        Timer1.Start()
        Dim key1 As Integer
        key1 = (Rnd() * 15)
        Select Case key1
            Case 1
                PictureBox10.Image = My.Resources.assault_1
                TextBox7.Text = "AC130"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
                Else TextBox8.Text = "12"
            Case 2
                PictureBox10.Image = My.Resources.assault_2
                TextBox7.Text = "Care Package"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "3"
                Else TextBox8.Text = "4"
            Case 3
                PictureBox10.Image = My.Resources.assault_3
                TextBox7.Text = "Juggernaut"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "14"
                Else TextBox8.Text = "15"
            Case 4
                PictureBox10.Image = My.Resources.assault_4
                TextBox7.Text = "Attack Helicopter"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "6"
                Else TextBox8.Text = "7"
            Case 5
                PictureBox10.Image = My.Resources.assault_5
                TextBox7.Text = "Pave Low"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
                Else TextBox8.Text = "12"
            Case 6
                PictureBox10.Image = My.Resources.assault_6
                TextBox7.Text = "IMS"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
                Else TextBox8.Text = "5"
            Case 7
                PictureBox10.Image = My.Resources.assault_7
                TextBox7.Text = "Assault Drone"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "9"
                Else TextBox8.Text = "10"
            Case 8
                PictureBox10.Image = My.Resources.assault_8
                TextBox7.Text = "Strafe Run"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 9
                PictureBox10.Image = My.Resources.assault_9
                TextBox7.Text = "AH-6 Overwatch"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 10
                PictureBox10.Image = My.Resources.assault_10
                TextBox7.Text = "Osprey Gunner"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "16"
                Else TextBox8.Text = "15"
            Case 11
                PictureBox10.Image = My.Resources.assault_11
                TextBox7.Text = "Percision Airstrike"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "5"
                Else TextBox8.Text = "6"
            Case 12
                PictureBox10.Image = My.Resources.assault_12
                TextBox7.Text = "Predator Missile"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
                Else TextBox8.Text = "5"
            Case 13
                PictureBox10.Image = My.Resources.assault_13
                TextBox7.Text = "Reaper"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 14
                PictureBox10.Image = My.Resources.assault_14
                TextBox7.Text = "Sentry Gun"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
               Else  TextBox8.Text = "5"
            Case 15
                PictureBox10.Image = My.Resources.assault_15
                TextBox7.Text = "Assault UAV"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "2"
                Else TextBox8.Text = "3"

        End Select
    End If
End Sub

4 个答案:

答案 0 :(得分:7)

在“AND”在另一行上有一个ELSE后,你就无法拥有代码:

你编码:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
  Else TextBox8.Text = "12"

修正:

If TextBox14.Text = "Hardline" Then
  TextBox8.Text = "5"
Else
  TextBox8.Text = "6"
End If

或:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "5" Else TextBox8.Text = "6"

或在末尾放置一个下划线:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "11" _
  Else TextBox8.Text = "12"

答案 1 :(得分:1)

当您使用If开始代码块时,必须使用End If结束该代码块。

我没有在End If个阻止中看到Case

以下是example from MSDN:如果您将其全部放在一行,则不需要End If

If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

-OR -

If condition Then [ statements ] [ Else [ elsestatements ] ]

答案 2 :(得分:1)

您还可以使用If运算符:

TextBox8.Text = If(TextBox14.Text = "Hardline", "5", "6")

答案 3 :(得分:0)

我对此代码有同样的问题并解决了它:

If buttoncount = 1 Then
         buttoncount = 1
 ElseIf (chkUnbook.Checked = True) Then 
        buttoncount = 0
 End if

显然,你必须在结束之前放置一个if if,否则即使有一个已存在(VB 2010)