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)) 

小数が必要だと確信しているため、変換を倍精度に変更しました。整数に小数を含めることはできません。小数がない場合、これら 2 つの条件はまったく同じになります。

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は数値を文字列で返します。コメントで尋ねたように、ユーザーが数字以外を入力できないようにしないのはなぜですか?

これを result : にしたいとし ましょ"< 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 に答える