0

嗨,我试图在我的程序中设计一个部分来构建由矩形表示的层,这取决于输入的大小将决定矩形宽度的结果。我在输入 < 0 时遇到问题,它将恢复为 1 或 0。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim rectangle As Integer
    rectangle = Val(TextBox1.Text)
    TextBox1.Text = Convert.ToString(rectangle)
    Form2.RectangleShape1.Width = Val(TextBox1.Text)
    If Val(TextBox1.Text) >= 1.0 Or Val(TextBox1.Text) <= 1.5 Then
        Form2.RectangleShape1.Width = 75
    End If
    If Val(TextBox1.Text) >= 1.5 Then
        Form2.RectangleShape1.Width = 120
    End If
    If Val(TextBox1.Text) <= 1.0 Then
        Form2.RectangleShape1.Width = 55
    End If
    Form2.RectangleShape1.Show()
    Me.Hide()
4

1 回答 1

1

提供的信息很难说,我不明白你在做什么,但那里有几件事似乎是错误的。

你失去了我的一部分

让我们先看看这个:

Dim rectangle As Integer 
rectangle = Val(TextBox1.Text)
TextBox1.Text = Convert.ToString(rectangle)
Form2.RectangleShape1.Width = Val(TextBox1.Text)
  • 所以你声明一个整数
  • 取出某个文本框的文本,然后通过取出字符仅从中选择数字
  • ToString()您在 Integer 上使用 a 在 Textbox 中分配回该值
  • 您再次分配文本框的值,取出字符(您已经这样做了)

您可以使用以下命令恢复此行:

Form2.RectangleShape1.Width = CDbl(Val(TextBox1.Text)) 

我将转换更改为双精度数,因为我确定您需要小数。整数不能有小数。如果没有小数,这两个条件将是完全相同的

If Val(TextBox1.Text) >= 1.0 Or Val(TextBox1.Text) <= 1.5 Then
    Form2.RectangleShape1.Width = 75
End If
If Val(TextBox1.Text) >= 1.5 Then
    Form2.RectangleShape1.Width = 120
End If

因为你可以有 1 或 2。(所以检查它是否在 1 和 1.5 或 1.5 和 2 之间是没有意义的)。

瓦尔

您可能知道这一点,但val将返回字符串中的数字。因此,正如我在评论中所问的那样,为什么不阻止用户输入除数字以外的其他内容?

假设想得到这个结果: "< 0"

  • 如果您阻止字母和符号,他将只需要输入"0"
  • 如果你像现在这样做,他会输入"< 0"val 函数只会返回"0",所以告诉我你需要的"<"是违反你当前逻辑的。

但我想要数字和符号......

不用担心。如果您确保用户只会输入您想要的内容(通过限制可能输入的字符),您可以捕获文本框的全部内容。

If myTextBox.Text = "< 1.5" Then 
'Do something cool
Else If myTextBox.Text = "< 0" Then
'Do something cooler
Else
'Do nothing
End If
于 2013-05-24T20:33:41.950 回答