Vb.net Can';在VB中不将输出发送到标签

Vb.net Can';在VB中不将输出发送到标签,vb.net,conditional,arithmetic-expressions,Vb.net,Conditional,Arithmetic Expressions,我的代码是这样的,当选中单选按钮时,整个总数乘以2。方程式是500乘以2,1000被存储起来了,但我无法显示它 代码: 特别是在您最后一行的第13行“radRepeat”: 'Output lblTotal.Text = intTotal.ToString("C") 用当前值intTotal覆盖lblTotal,而不是乘以2(即,覆盖第13行中的内容) 最简单的修复方法是更换 lblTotal.Text = CStr(2 * CDbl(intTotal.ToString("C"))) 与 在

我的代码是这样的,当选中单选按钮时,整个总数乘以2。方程式是500乘以2,1000被存储起来了,但我无法显示它

代码:

特别是在您最后一行的第13行“radRepeat”

'Output
lblTotal.Text = intTotal.ToString("C")
用当前值intTotal覆盖lblTotal,而不是乘以2(即,覆盖第13行中的内容)

最简单的修复方法是更换

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

在你的最后一行:

'Output
lblTotal.Text = intTotal.ToString("C")
用当前值intTotal覆盖lblTotal,而不是乘以2(即,覆盖第13行中的内容)

最简单的修复方法是更换

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


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

您应该替换:

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

然后让你的最后一句话像平常一样写到标签上


如果您试图不更改intTotal中的值,但仍在标签中显示翻倍的值,则应将标签写入If。。。其他的block

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

您应该替换:

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

然后让你的最后一句话像平常一样写到标签上


如果您试图不更改intTotal中的值,但仍在标签中显示翻倍的值,则应将标签写入If。。。其他的block

您可能想要尝试做的是,看看代码是否真的存在bug,或者只是一个简单的逻辑错误,即在每个代码块之后插入一些中断

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

您可能想要尝试做的是,看看代码是否真的存在bug,或者只是一个简单的逻辑错误,在每个代码块之后插入一些中断

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

CDbl(intTotal.ToString(“C”))
。。。取一个整数,将其转换为字符串,然后再次将其解析为double。你为什么这么做?那没有道理。这到底是怎么回事?当您在调试器中单步执行此操作时,哪里会出错?发生这种情况时,运行时值是什么?设置
lblTotal.Text
的值将设置该标签的文本。
CDbl(intTotal.ToString(“C”)
。。。取一个整数,将其转换为字符串,然后再次将其解析为double。你为什么这么做?那没有道理。这到底是怎么回事?当您在调试器中单步执行此操作时,哪里会出错?发生这种情况时,运行时值是什么?设置
lblTotal.Text的值将设置该标签的文本。