【问题标题】:How to not allow textbox to have a negative value? (Visual Basic)如何不允许文本框有负值? (Visual Basic)
【发布时间】:2016-10-20 01:06:21
【问题描述】:

这里的菜鸟问题。我正在尝试编写一个程序,以便当有人左键单击标签时,文本框中的值会增加 1。当他们右键单击它时,值会下降 1。这一切都有效,除了我没有'不希望该值能够成为负数。我试图阻止它发生,当文本框中已经有一个正值时它会起作用。但是,如果您在左键单击之前右键单击标签(在文本框中的任何值之前),它仍然会变为“-1”,然后停在那里。这是我正在使用的代码:

Private Sub Label5_MouseClick(sender As Object, e As MouseEventArgs) Handles Label5.MouseClick

    If e.Button = MouseButtons.Left Then
        SawWhetOwl.Text = (Val(SawWhetOwl.Text) + 1).ToString()
        Label5.Text = SawWhetOwl.Text
    ElseIf e.Button = MouseButtons.Right Then
        If SawWhetOwl.Text = CInt(SawWhetOwl.Text < 0) Then
            Exit Sub
        Else
            SawWhetOwl.Text = (Val(SawWhetOwl.Text) - 1).ToString()
            Label5.Text = SawWhetOwl.Text
        End If
    End If
End Sub

我认为,问题在于文本框中的值一开始是空的,没有分配任何值。因此,当我在给它一个值之前右键单击它时,它无法计算它是否小于 0,它只会给我 -1,我想。我很困惑,如果这个问题令人困惑,我很抱歉。我错过了什么明显的东西吗?

【问题讨论】:

  • 如果值或范围很重要,您可能需要使用 NumericUpDown
  • 如何在我发布的代码中应用它?我是编程的绝对初学者,所以我真的不知道那是什么。
  • 它们在控制工具箱中 - 而不是文本框(用于文本)使用NumericUpDown 来收集数字。它具有 Min、Max 和 Decimal 位置属性,可满足您的需求
  • 还有其他方法可以做到这一点吗?我有非常有限的时间来完成这个(这是一个学校项目),我没有时间替换文本框并且必须在多个地方更改代码才能使它们成为不同类型的控件。必须有一种方法可以在带有文本框的代码中做到这一点。

标签: vb.net


【解决方案1】:

您可能需要检查文本是否为空以减少计数。

Private Sub Label5_MouseClick(sender As Object, e As MouseEventArgs) Handles Label5.MouseClick

    If e.Button = MouseButtons.Left Then
        SawWhetOwl.Text = (Val(SawWhetOwl.Text) + 1).ToString()
        Label5.Text = SawWhetOwl.Text
    ElseIf e.Button = MouseButtons.Right Then
        If  String.IsNullOrEmpty(SawWhetOwl.Text) OrElse CInt(SawWhetOwl.Text) <= 0 Then
            Exit Sub
        Else
            SawWhetOwl.Text = (Val(SawWhetOwl.Text) - 1).ToString()
            Label5.Text = SawWhetOwl.Text
        End If
    End If
End Sub

【讨论】:

  • visual studio 在“IsNullOrEmpty”下放了一条红线,表示没有声明??
  • 哦对了...应该是 String.IsNullOrEmpty。更新了帖子。
  • 它似乎应该可以工作,但是当我运行它并右键单击它时它会崩溃,然后指向“If SawWhetOwl.Text = CInt(SawWhetOwl.Text
  • 再次更新。立即查看
猜你喜欢
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多