2017-04-22 125 views
-1

所以我想要做的就是做出一个测验,你选择的答案与正确的图片,必须点击。我需要5个问题,但通过使用Select Case方法,你不能直接投射Picturebox1.click如何处理多个事件一次点击多个PictureBoxes?

Question with multiple picture answers which after you click will pop messagebox.show function and move on to the next question 任何帮助将不胜感激!

Private Sub control1_mouseclick1(sender As Object, e As EventArgs) Handles PictureBox2.Click, PictureBox3.Click, PictureBox1.Click, PictureBox4.Click 
    Dim p As PictureBox = CType(sender, PictureBox) 
    Select Case CInt(p.Tag) 
     Case 1 



    End Select 
End Sub 
+1

我看到你铸造'sender'参数图片框,以确定哪些点击为PB。看起来不错,然后你使用.Tag()属性来做一些事情,究竟是什么不工作?任何错误信息? –

+1

你的问题没有意义,你已经处理了'Click'事件多个'PictureBox'控件,你甚至可以访问被点击的'PictureBox',所以与事件相关的任何事情都与你的问题完全无关。如果你现在想做一些具有'Tag'属性的值那么这就是你应该问的问题,在这种情况下,知道'标签'可能具有什么值以及你想要什么是有帮助的为每一个做。 – jmcilhinney

+0

评论只是为了让你通知大声笑 – user7904580

回答

0
Private Sub control1_mouseclick1(sender As Object, e As EventArgs) Handles PictureBox2.Click, PictureBox3.Click, PictureBox1.Click, PictureBox4.Click 

    Select Case e 
     Case 1 
      If (PictureBox2.Click = True) Then 
       MessageBox.Show("CORRECT!") 
      Else 
       MessageBox.Show("INCORRECT!") 

      End If 
      quest2() 


    End Select 
End Sub 

您的权利,它可能没有什么意义。什么我想要做的代码正好是显示,但PictureBox2.Click不能直接在这里进行,我作为初学者,我不知道自己能做到的正确程度。以前的代码我试图使用其他人在论坛上发现的建议,但是我不清楚如何正确使用它,所以我甚至都不打扰自己它。希望你了解它!

0

如果你想知道哪些图片框被点击,你可以这样做:

Private Sub control1_mouseclick1(sender As Object, e As EventArgs) Handles PictureBox2.Click, PictureBox3.Click, PictureBox1.Click, PictureBox4.Click 
    Dim pb As PictureBox = DirectCast(sender, PictureBox) 

    If pb Is PictureBox1 Then 

    ElseIf pb Is PictureBox2 Then 

    ElseIf pb Is PictureBox3 Then 

    ElseIf pb Is PictureBox4 Then 

    End If 
End Sub 
0

那么这对我来说是有意义的,谢谢。但另一个问题发生.. 私人小组control1_mouseclick1(发送者为对象,例如作为EventArgs的)把手PictureBox2.Click,PictureBox3.Click,PictureBox1.Click,PictureBox4.Click 昏暗PB作为图片框= DirectCast(发件人,图片框)

Select Case e 
     Case 1 
      If pb Is PictureBox2 Then 
       MessageBox.Show("Correct!") 
       Form1.scorepoint += 1 
      ElseIf pb Is PictureBox1 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox3 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox4 Then 
       MessageBox.Show("Incorrect!") 
      End If 
      question2() 
     Case 2 
      If pb Is PictureBox1 Then 
       MessageBox.Show("Correct!") 
       Form1.scorepoint += 1 
      ElseIf pb Is PictureBox2 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox3 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox4 Then 
       MessageBox.Show("Incorrect!") 
      End If 
      question3() 
     Case 3 
      If pb Is PictureBox4 Then 
       MessageBox.Show("Correct!") 
       Form1.scorepoint += 1 
      ElseIf pb Is PictureBox1 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox3 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox2 Then 
       MessageBox.Show("Incorrect!") 
      End If 
      question2() 
     Case 4 
      If pb Is PictureBox3 Then 
       MessageBox.Show("Correct!") 
       Form1.scorepoint += 1 
      ElseIf pb Is PictureBox1 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox2 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox4 Then 
       MessageBox.Show("Incorrect!") 
      End If 
      question5() 
     Case 5 
      If pb Is PictureBox3 Then 
       MessageBox.Show("Correct!") 
       Form1.scorepoint += 1 
      ElseIf pb Is PictureBox1 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox2 Then 
       MessageBox.Show("Incorrect!") 
      ElseIf pb Is PictureBox4 Then 
       MessageBox.Show("Incorrect!") 
      End If 
    End Select 
    Form1.trackscore() 
End Sub 

因此,当我呼叫出选择案例方法时,每个Case“number”没有声明,它显示错误“Operator'='没有为类型System.EventArgs定义。和“整数” 在顶部,我有 “昏暗è作为整数',这是我的选择案例可变”