2017-03-02 4 views
0

このコードは、テキストボックスのエントリが指定された条件(1〜100の整数)に適合するかどうかをチェックするサブルーチンに由来します。無効なキャスト期待値が未処理(テキストボックスの内容をチェックしているとき)

最初のIF文は数値でないかどうかをチェックする必要があります。数値でない場合は、テキストボックスの内容を空白にして番号を入力する必要があります。

2番目のIF文は、数値が100より大きいかどうかを確認する必要があります。そうであれば、適切な数値を入力できるようにテキストボックスの内容を空白に設定する必要があります。

第3 IF文では、数値が1より小さいかどうかを確認する必要があります。数値が1より小さい場合は、テキストボックスの内容を空白に設定して適切な数値を入力する必要があります。

最後に、ボックスの内容を変数として設定する必要があります。

私は最初に最初のIF文を独自にプログラムしていました。しかし、他のものを追加すると、テキストボックスに何かを入力したときに私のプログラムがクラッシュし、エラーが私のタイトルに記載されているようになりました。私は複数のソリューションを検討しており、問題を解決したのはほぼ2日間は何も見つかりませんでした。

何か提案がありがとうございます。この操作で

Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles NumQTextBoxInput.TextChanged 
      'Check if input is numeric 
      If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = "" 
      If (NumQTextBoxInput.Text > 100) Then 
       NumQTextBoxInput.Text = "" 
      End If 
      If (NumQTextBoxInput.Text < 1) Then 
       NumQTextBoxInput.Text = "" 
      End If 
      ArchwayComputingExamCreator.GlobalVariables.NumOfQuestions = NumQTextBoxInput.Text 
      'Setting the variable to the contense 

     End Sub 
+3

オプションを有効にします。テキストボックスには数字は含まれず、テキストのみが含まれます。 'If​​(NumQTextBoxInput.Text> 100)Then'はナンセンステストです。コントロールに "Ziggy"が含まれている場合は100以上か100未満ですか?ループ部分以外は – Plutonix

+0

[この回答は完全に適用されます](http://stackoverflow.com/a/42459667/1070452) – Plutonix

答えて

0

数値のテキストを受け取るときは、常に適切な解析関数を使用する必要があります。

Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles NumQTextBoxInput.TextChanged 

    Dim Value as integer 
    If Not Integer.TryParse(NumQTextBoxInput.text, Value) OrElse Value < 1 OrElse Value > 100 Then NumQTextBoxInput.Text = "" 

    ... no idea if the archway bit is really what you wanted so left that out .... 

    End Sub 
+0

ありがとう、このソリューションは働いた:) –

0

If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = "" 

いつでも入力は、あなたがまだない数値ある値に設定し、数値ではありません。だから、任意の数値比較は失敗します。

If (NumQTextBoxInput.Text > 100) 

はたぶん、あなたは、いくつかの数値の値をデフォルトに設定する?:

If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = "0" 

それとも、それが数値でないとき、完全メソッドを終了?:

If Not IsNumeric(NumQTextBoxInput.Text) Then 
    NumQTextBoxInput.Text = "" 
    Return 
End If 
を意味しました

または別のものがありますか?論理を変更しても、数値以外の文字列では数値比較を実行できません。

関連する問題