【问题标题】:VB Radiobutton.checked state returns -1 when performed arithmetic operations with itVB Radiobutton.checked 状态在使用它执行算术运算时返回 -1
【发布时间】:2017-12-06 09:02:44
【问题描述】:

我是 Visual Basic 的初学者,我正在开发一个计算器,其中包含以下代码。

labeltotal.text = (radiobutton1.Checked) * 1000

我对上面代码的期望是,如果radiobutton1被选中,总的值应该是1000,否则应该是0。

但我得到的是,如果选中 radiobutton1,则总值变为 -1000,否则变为 0。

但如果我使用复选框,我会得到正确的值。例如, labeltotal.text = (checkbox1.Checkstate) * 1000 它根据检查状态为我提供预期的正确值。

如何使单选按钮的行为与上述代码中的复选框相同?

【问题讨论】:

  • VB? VB.Net? VBA?哪一个?首先要学习的是它们相似,但又不相同。 :-)
  • 这是视觉基础。
  • 好的,您应该删除vba 标签。另外,请查看tour 以及How to Askminimal reproducible example。哦,还有,欢迎来到 Stack Overflow! :-)

标签: .net vb.net visual-studio radio-button


【解决方案1】:

首先,您应该将Option Strict 切换为On

如果将Boolean 转换为Integer,您将得到-1 对应True0 对应False
更多信息请见:Convert Boolean to Integer in VB.NET

所以以下之一应该返回你想要的结果:

labeltotal.Text = (CInt(radiobutton1.Checked) * 1000 * -1).ToString

labeltotal.Text = (CInt(radioButton1.Checked) ^ 2 * 1000).ToString

还有一个函数 Convert.ToInt32 会为 True 返回一个 1

labeltotal.Text = (Convert.ToInt32(radioButton1.Checked) * 1000).ToString

但在这种特定情况下,计算并没有真正意义。
以下内容更清晰,更适合这种情况:

labeltotal.Text = If(radioButton1.Checked, "1000", "0")

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2013-04-16
    相关资源
    最近更新 更多