无法将输出发送到 VB 中的标签

Can't send output to label in VB

我制作的代码片段,以便在检查单个按钮时,整个总数乘以2。方程式为500倍2,而1000正在存储,但我无法显示它不知何故。

代码:

    If radMeter.Checked Then
        intTotal = CInt(intMeter.ToString("C"))

    ElseIf radZone.Checked Then
        intTotal = CInt(intParking.ToString("C"))

    ElseIf radBlocking.Checked Then
        intTotal = CInt(intDriveway.ToString("C"))

    ElseIf radHandicap.Checked Then
        intTotal = CInt(intHandicap.ToString("C"))

        If radRepeat.Checked Then
            lblTotal.Text = CStr(2 * CDbl(intTotal.ToString("C")))
        End If

    End If

    'Output
    lblTotal.Text = intTotal.ToString("C")

具体在第 13 行 "radRepeat"

在你的最后一行中:

'Output
lblTotal.Text = intTotal.ToString("C")

您用 intTotal 的 current 值覆盖了 lblTotal,您所做的 而不是 乘以 2(即,您覆盖了您所做的在第 13 行)。

解决这个问题的最简单方法是更换

lblTotal.Text = CStr(2 * CDbl(intTotal.ToString("C")))

intTotal = 2 * intTotal

仔细检查您的代码 - 您实际上向标签写入了 TWICE(导致您的更改被覆盖,并且从未保存在您的 intTotal 变量中):

    If radRepeat.Checked Then
       **lblTotal.Text** = CStr(2 * CDbl(intTotal.ToString("C")))
    End If

End If

'Output
**lblTotal.Text** = intTotal.ToString("C")

你应该替换:

lblTotal.Text = CStr(2 * CDbl(intTotal.ToString("C")))

intTotal = (2 * intTotal)

然后让你的最后一条语句正常写入标签。

如果您尝试不更改 intTotal 中的值,但仍然在标签中显示双倍的金额,那么您应该将标签写入您的 If...Else... 块

您可能想尝试做的是在每个代码块后插入几个中断,以查看代码是否真的存在错误或只是一个简单的逻辑错误。

我可能看到的是,当您检查了单选按钮障碍,并且还检查了单选按钮重复时,代码将计算值 * 2,但在 if then 语句关闭后它会写再次转到 lblTotal 的文本字段,使其看起来好像没有计算。

我当然假设您至少有两个组允许一次检查多个单选按钮。

我建议进行以下修复:

If radRepeat.Checked Then
        intTotal = CStr(2 * CDbl(intTotal.ToString("C")))
End If

这样,您的输出将适用于所有先前的 if/then 语句。

编辑: 我意识到这基本上被我上面的评论所涵盖,并进行了一些清理。

如果是我,我会设置一些不同的东西并节省我的击键,在某种意义上,如果你只是使用整数计算,等到输出行转换为字符串、双精度或其他任何东西情况可能是这样。

看起来像这样:

    If radMeter.Checked Then
    intTotal = intMeter

ElseIf radZone.Checked Then
    intTotal = intParking

ElseIf radBlocking.Checked Then
    intTotal = intDriveway

ElseIf radHandicap.Checked Then
    intTotal = intHandicap

    If radRepeat.Checked Then
        intTotal = (2 * intTotal)
    End If

End If

'Output
lblTotal.Text = intTotal.ToString("C")

当然,前提是这些int(Variables)已经正确引入了。