2017-03-02 20 views
0

此代碼來自檢查文本框條目是否符合指定條件(1到100之間的整數)的子例程。Invalid Cast Expectation Unhaded(檢查文本框的內容時)

第一個IF語句應檢查它是否不是數字條目。如果它不是數字,那麼文本框的內容應該設置爲空白,以便輸入一個數字。

第二個IF語句應檢查數字是否大於100.如果是,則文本框的內容應設置爲空白,以便可以輸入適當的數字。

第三個IF語句應該檢查數字是否小於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

打開選項嚴格。文本框不包含數字,只包含文本。所以'如果(NumQTextBoxInput.Text> 100)然後'是一個無意義的測試。如果控件包含「Ziggy」是否大於或小於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 

或者別的什麼?然而,你修改你的邏輯,重點是你不能對非數字字符串進行數字比較。