无法将输出发送到VB

时间:2015-11-03 14:25:01

标签: vb.net conditional arithmetic-expressions

我所拥有的代码使得当选中单选按钮时,整个总数乘以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"

3 个答案:

答案 0 :(得分:3)

在你的最后一行:

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

使用intTotal的当前值覆盖lblTotal,你做了乘以2(即,你覆盖你在第13行中所做的)。

解决此问题的最简单方法是替换

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

intTotal = 2 * intTotal

答案 1 :(得分:3)

仔细检查您的代码 - 您实际上是在标签上写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 ... block

答案 2 :(得分:2)

您可能想要尝试做什么,看看代码是否确实存在错误,或者仅仅是一个简单的逻辑错误就是在每个代码块之后插入几个中断。

我可能看到的是,当你检查了单选按钮障碍,并且另外选中了单选按钮时,代码将计算值* 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(变量)被正确引入。