Vb.net 怪异的图片盒行为

Vb.net 怪异的图片盒行为,vb.net,winforms,forms,Vb.net,Winforms,Forms,我有一个程序,我有10个picturebox如果form1的文本框与form3的文本框中的文本相同,它将显示一个复选标记的图片,否则它将显示一个交叉标记的图片..但是当我输入答案时,当它显示结果时,它只显示一个picturebox和一个picturebox,并且总是显示一个复选标记这不符合程序的目的,其他九个图片盒也不见了。。(我已经检查了pictureboxes,它的启用和可见属性都设置为TRUE)提前感谢各位,我希望你们能帮助我解决这个问题 Imports System.Convert Im

我有一个程序,我有10个picturebox如果form1的文本框与form3的文本框中的文本相同,它将显示一个复选标记的图片,否则它将显示一个交叉标记的图片..但是当我输入答案时,当它显示结果时,它只显示一个picturebox和一个picturebox,并且总是显示一个复选标记这不符合程序的目的,其他九个图片盒也不见了。。(我已经检查了pictureboxes,它的启用和可见属性都设置为TRUE)提前感谢各位,我希望你们能帮助我解决这个问题

Imports System.Convert
Imports System.IO
Imports System.Windows.Forms.PictureBox
Imports System.Drawing.Image

Public Class Form4
Inherits System.Windows.Forms.Form
Public frm1 As Form1
Private frm2 As Form2
Public frm3 As Form3
Private frm4 As Form4
Private frm5 As Form5
Private Form5 As Form5


Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim lbl3 As Integer
    lbl3 = CInt(lbl3)

    Me.Visible = False


End Sub
Public Sub New1(ByVal callerInstance As Form1)

    ' Call required if you add your constructor manually
    InitializeComponent()

    ' save the instance of the Me variable passed to this constructor
    frm1 = callerInstance
End Sub
Public Sub New5(ByVal callerInstance As Form2)

    ' Call required if you add your constructor manually
    InitializeComponent()

    ' save the instance of the Me variable passed to this constructor
    frm2 = callerInstance
End Sub
Public Sub New4(ByVal callerInstance As Form3)

    ' Call required if you add your constructor manually
    InitializeComponent()

    ' save the instance of the Me variable passed to this constructor
    frm3 = callerInstance
End Sub
Public Sub New3(ByVal callerInstance As Form4)

    ' Call required if you add your constructor manually
    InitializeComponent()

    ' save the instance of the Me variable passed to this constructor
    frm4 = callerInstance
End Sub
Public Sub New5(ByVal callerInstance As Form5)

    ' Call required if you add your constructor manually
    InitializeComponent()

    ' save the instance of the Me variable passed to this constructor
    frm5 = callerInstance
End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim frm1 As Form1 = Form1
    Dim frm2 As Form2 = Form2
    Dim frm3 As Form3 = Form3
    Dim frm5 As Form5 = Form5


    If frm5 Is Nothing Then
        frm5 = New Form5(Me)
        AddHandler frm2.FormClosed, AddressOf Me.Form5HasBeenClosed



        frm5.Label21.Text = frm1.TextBox1.Text
        frm5.Label21.ForeColor = Color.Black



        frm5.Label22.Text = frm1.TextBox2.Text
        frm5.Label22.ForeColor = Color.Black



        frm5.Label23.Text = frm1.TextBox3.Text
        frm5.Label23.ForeColor = Color.Black


        frm5.Label24.Text = frm1.TextBox4.Text
        frm5.Label24.ForeColor = Color.Black



        frm5.Label25.Text = frm1.TextBox5.Text
        frm5.Label25.ForeColor = Color.Black



        frm5.Label26.Text = frm1.TextBox6.Text
        frm5.Label26.ForeColor = Color.Black


        frm5.Label27.Text = frm1.TextBox7.Text
        frm5.Label27.ForeColor = Color.Black



        frm2.Label28.Text = frm1.TextBox8.Text
        frm2.Label28.ForeColor = Color.Black



        frm5.Label29.Text = frm1.TextBox9.Text
        frm5.Label29.ForeColor = Color.Black


        frm5.Label30.Text = frm1.TextBox10.Text
        frm5.Label30.ForeColor = Color.Black



        frm5.Label31.Text = frm1.TextBox11.Text
        frm5.Label31.ForeColor = Color.Black


        frm5.Label32.Text = frm1.TextBox12.Text
        frm5.Label32.ForeColor = Color.Black



        frm5.Label33.Text = frm1.TextBox13.Text
        frm5.Label33.ForeColor = Color.Black



        frm5.Label34.Text = frm1.TextBox14.Text
        frm5.Label34.ForeColor = Color.Black


        frm5.Label35.Text = frm1.TextBox15.Text
        frm5.Label35.ForeColor = Color.Black


        frm5.Label36.Text = frm1.TextBox16.Text
        frm5.Label36.ForeColor = Color.Black



        frm5.Label37.Text = frm1.TextBox17.Text
        frm5.Label37.ForeColor = Color.Black



        frm5.Label38.Text = frm1.TextBox18.Text
        frm5.Label38.ForeColor = Color.Black


        frm5.Label39.Text = frm1.TextBox19.Text
        frm5.Label39.ForeColor = Color.Black



        frm5.Label40.Text = frm1.TextBox20.Text
        frm5.Label40.ForeColor = Color.Black
    End If
    If frm5 IsNot Nothing Then
        frm5.Show(Me) 'Show Second Form  
        Me.Hide()
    End If

    If CBool(String.Compare(frm1.TextBox2.Text.Trim(), frm3.TextBox1.Text.Trim(), True)) Then

        frm5.PictureBox1.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")

    Else
        frm5.PictureBox1.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")


        If CBool(String.Compare(frm1.TextBox4.Text.Trim(), frm3.TextBox2.Text.Trim(), True)) Then
            frm5.PictureBox2.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")

        Else

            frm5.PictureBox2.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

            If CBool(String.Compare(frm1.TextBox6.Text.Trim(), frm3.TextBox3.Text.Trim(), True)) Then
                frm5.PictureBox3.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
            Else

                frm5.PictureBox3.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                If CBool(String.Compare(frm1.TextBox8.Text.Trim(), frm3.TextBox4.Text.Trim(), True)) Then

                    frm5.PictureBox4.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                Else
                    frm5.PictureBox4.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                    If CBool(String.Compare(frm1.TextBox10.Text.Trim(), frm3.TextBox5.Text.Trim(), True)) Then

                        frm5.PictureBox5.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                    Else
                        frm5.PictureBox5.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                        If CBool(String.Compare(frm1.TextBox12.Text.Trim(), frm3.TextBox6.Text.Trim(), True)) Then

                            frm5.PictureBox6.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                        Else
                            frm5.PictureBox6.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                            If CBool(String.Compare(frm1.TextBox14.Text.Trim(), frm3.TextBox7.Text.Trim(), True)) Then
                                frm5.PictureBox7.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                            Else
                                frm5.PictureBox7.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                                If CBool(String.Compare(frm1.TextBox16.Text.Trim(), frm3.TextBox8.Text.Trim(), True)) Then

                                    frm5.PictureBox8.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                                Else
                                    frm5.PictureBox8.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                                    If CBool(String.Compare(frm1.TextBox18.Text.Trim(), frm3.TextBox9.Text.Trim(), True)) Then
                                        frm5.PictureBox9.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                                    Else
                                        frm5.PictureBox9.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")

                                        If CBool(String.Compare(frm1.TextBox20.Text.Trim(), frm3.TextBox10.Text.Trim(), True)) Then

                                            frm5.PictureBox10.Image = Image.FromFile("D:\vbproject\vbp\checkmark.jpg")
                                        Else

                                            frm5.PictureBox10.Image = Image.FromFile("D:\vbproject\vbp\crossmark.jpg")




                                            frm5.Show()
                                            Me.Hide()
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

    If frm5 IsNot Nothing Then
        frm5.Visible = False

        frm5.Show() 'Show Second Form  

        Me.Hide()
    End If

End Sub

Private Sub Form5HasBeenClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs)
    Throw New NotImplementedException
End Sub


End Class

这里有一些问题需要解决: 1.您已经粘贴了很多代码。您所需要的只是粘贴If语句(因为这就是问题所在,也是问题所在)。 2.这是关于你的问题:

如果两个字符串匹配,则Compare将给出结果0。0(如果将其转换为布尔值,则也称为false)。因此,当两个字符串匹配时,您可以正确地显示一个十字。比较还会告诉您哪个字符串比另一个字符串大。1如果第一个更大,则为-1如果不是(这里的旁道不重要)。我建议您改为执行以下操作:

 If frm1.TextBox2.Text.ToUpper().Equals(frm3.TextBox1.Text.ToUpper()) Then
在这种情况下,很明显发生了什么。如果字符串1等于字符串2,则结果为真。不需要CBool

你的陈述很糟糕。问题2-oo只有在第一个陈述是错误的情况下才会解决。我会告诉你我的意思

   If statement = true Then
     Display checkmark
   Else
     Display cross
     'Now you do the next one inside the else statement
     If statement2 = True Then 
        'Display checkmark
     Else 
        Display cross
        'And then you continue the nesting
     End If
   End If
您需要做的是:

If statement = true Then
'Display check
Else
'Display cross
End If 'Notice how I close the ifstatement before I go to the next one.

If statement2 = true Then
'Display check
Else
'Display cross
End If

etc...
我希望你能明白这一点,否则让我知道,我会尝试进一步简化它