【问题标题】:Wrong Result to the last form on label always 0标签上最后一个表单的错误结果始终为 0
【发布时间】:2014-03-22 15:05:06
【问题描述】:

大家好,我想就我在 VB.NET 中遇到的问题寻求一些帮助。我有这个程序,如果文本框中的文本等于前一个表单的文本框中的文本,它将为每个正确答案加 1,但它始终显示零(0)(最后一个表单)并且不显示结果我想要。这是我的代码家伙,我希望您能帮助我解决这个问题,谢谢。

Imports System.Convert 
Imports System.IO 
Public Class Form3 

Private frm1 As Form1 
Private frm4 As Form4 

Public Sub New1(ByVal callerInstance As Form1) 

    InitializeComponent() 

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

Public Sub New2(ByVal callerInstance As Form4) 

    InitializeComponent() 
    ' save the instance of the Me variable passed to this constructor 
    frm4 = 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 frm4 As Form4 = Form4 
    frm1 = New Form1 
    frm4 = New Form4 

    'program execution proper 
    Dim lbl3 As Integer = CInt(frm4.Label3.Text) 
    lbl3 = CInt(frm4.Label3.Text) 
    Dim Label22 As New Label 
    If frm1.TextBox2.Text = TextBox1.Text Then 
        lbl3 = CInt(lbl3) + 0 'if(integer.tryparse, lbl3) then lbl3 += 1 
        Dim Label24 As New Label 
        If Not frm1.TextBox4.Text = TextBox2.Text Then 
            lbl3 = CInt(lbl3) + 0 
            Dim Label26 As New Label 
            If Not frm1.TextBox6.Text = TextBox3.Text Then 
                lbl3 = CInt(lbl3) + 0 
                Dim Label28 As New Label 
                If Not frm1.TextBox8.Text = TextBox4.Text Then 
                    lbl3 = CInt(lbl3) + 0 
                    Dim Label30 As New Label 
                    If Not frm1.TextBox10.Text = TextBox5.Text Then 
                        lbl3 = CInt(lbl3) + 0 
                        Dim Label32 As New Label 
                        If Not frm1.TextBox12.Text = TextBox6.Text Then 
                            lbl3 = CInt(lbl3) + 0 
                            Dim Label34 As New Label 
                            If Not frm1.TextBox14.Text = TextBox7.Text Then 
                                lbl3 = CInt(lbl3) + 0 
                                Dim Label36 As New Label 
                                If Not frm1.TextBox16.Text = TextBox8.Text Then 
                                    lbl3 = CInt(lbl3) + 0 
                                    Dim Label38 As New Label 
                                    If Not frm1.TextBox18.Text = TextBox9.Text Then 
                                        lbl3 = CInt(lbl3) + 0 
                                        Dim Label40 As New Label 
                                        If Not frm1.TextBox20.Text = TextBox10.Text Then 
                                            lbl3 = CInt(lbl3) + 0 'frm4.Label3.Text = (frm4.Label3.Text) + 1 
                                            frm4.Show() 
                                            Me.Hide() 
                                        Else 
                                            lbl3 = CInt(lbl3) + 1 
                                            frm4.Show() 
                                            Me.Hide() 
                                        End If 
                                    End If 
                                End If 
                            End If 
                        End If 
                    End If 
                End If 
            End If 
        End If 
    End If 

    If frm4 IsNot Nothing Then 
        frm4.Visible = False 
        frm4.Show(Me) 'Show Second Form 

        Me.Hide() 
    End If 
End Sub 


End Class

【问题讨论】:

  • @ElektroStudios 嗨,先生,您可以批评,但请确保它是建设性的,而不是犯规:) 无论如何,帮助而不是指责会更好.. 顺便说一句,谢谢你的输入:)
  • 第三次幸运? - 一式三份 HereHere - 或者三个有相同问题的不同用户!
  • @OSKM 不要这么粗鲁,我是在礼貌地问。我的第一个帖子没有答案,所以它正好为如何获得帮助提供一种方式。谢谢您关心的方式。
  • 道歉 - 无意粗鲁,只是提请注意其他两个问题,以免一些可怜的人浪费他们宝贵的时间重复已经提出的建议,我几乎在您的第二篇文章中这样做了,然后链接到第一个被添加了!作为建议,您最好保留相同的用户名,并在新问题中突出显示之前的问题,说明他们的答案为何不充分。
  • 一点 - 所有Dim-ed 标签的目的是什么 - 它们似乎没有在代码示例中使用 - 它们是否在其他地方使用?

标签: vb.net winforms forms


【解决方案1】:

您向Lbl3 添加任何内容的唯一时间是:

If Not frm1.TextBox20.Text = TextBox10.Text Then 
    lbl3 = CInt(lbl3) + 0 'frm4.Label3.Text = (frm4.Label3.Text) + 1 
    frm4.Show() 
    Me.Hide() 
Else 
    lbl3 = CInt(lbl3) + 1 
    frm4.Show() 
    Me.Hide() 
End If 

有了嵌套,只有当所有其他 If 语句 = True 时,您才能达到这一点。

除此之外,在所有其他 if 语句中,您的结果要么是 lbl3 = CInt(lbl3) + 0(如果此语句和所有之前的语句都是真的),或者如果其中任何一个是假的,那么所有后续的都是无关紧要的。

如果我正确理解您的意图,那么您想要的是:

If frm1.TextBox2.Text = TextBox1.Text Then 
    lbl3 = CInt(lbl3) + 0 'if(integer.tryparse, lbl3) then lbl3 += 1 
    Dim Label24 As New Label 
    If Not frm1.TextBox4.Text = TextBox2.Text Then 
        lbl3 = CInt(lbl3) + 0 

试试:

If frm1.TextBox2.Text = TextBox1.Text Then lbl3 += 1
If Not frm1.TextBox4.Text = TextBox2.Text Then lbl3 += 1

等等……

然后要显示它,您需要更新以下代码:

If Not frm1.TextBox20.Text = TextBox10.Text Then 
    lbl3 = CInt(lbl3) + 0 'frm4.Label3.Text = (frm4.Label3.Text) + 1 
    frm4.Label3.Text = CStr(lbl3)
    frm4.Show() 
    Me.Hide() 
Else 
    lbl3 = CInt(lbl3) + 1
    frm4.Label3.Text = CStr(lbl3)
    frm4.Show() 
    Me.Hide() 
End If 

(这与其他问题之一的答案非常相似,因此我在上面发表评论)

【讨论】:

  • 您好,先生,感谢您的回答。它在这一行显示错误 frm4.Label3.Text = lbl3 错误是 Option Strict On 不允许从 'Integer' 到 'String' 的隐式转换。
  • 问题解决了,先生!非常感谢,我收回我刚才说的你很粗鲁的话,现在我知道你是个好人:) 再次感谢,非常感谢! :)
【解决方案2】:

添加设置代码。

frm4.Label3.Text = lbl3.ToString()

【讨论】:

  • 感谢您的回复。您好,先生,您是什么意思,您能详细说明一下吗?再次感谢
  • 您的代码不保存增量值,因此它始终显示0
  • 嗨先生,我将把 frm4.Label3.Text = lbl3.ToString() 放在哪里?谢谢
  • 你无法理解它应该放在哪里的东西表明你没有理解你自己的代码。所以问题不在于代码,而在于你。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多