2017-09-17 5 views
0

水平スクロールバーまたはテキストボックスを使用して値を入力できるフォームを作成しようとしています。値(0〜90の数値)が両方の実行時のメソッド。私はほとんどがテキストボックスに値を入力し、値を削除すると、 "文字列からの変換" "Integer 'を入力すると有効ではありませんこれを持っている。この問題を解決する方法がわかりません。任意の助けてくれてありがとうは"文字列" "からタイプ '整数'への変換は無効です。" TextBoxとHScrollBarを使用するとエラーが発生する

Public Class Form1 

Private Sub AngleScroll_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles AngleScroll.Scroll 
    TextBox1.Text = AngleScroll.Value 

End Sub 

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    If (e.KeyChar < "0" OrElse e.KeyChar > "9") _ 
     AndAlso e.KeyChar <> ControlChars.Back Then 
     e.Handled = True 

    End If 
End Sub 

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    AngleScroll.Value = TextBox1.Text 

End Sub 


End Class 
+0

Backspaceキーを使用してバグを引き起こすのは簡単です。 If TextBox1.Text.Length> 0 Then ... –

+1

暗黙的な変換を避けるために 'Option Strict On'を設定してください。 'AngleScroll.Value = TextBox1.Text'値は整数ですが、Textは文字列です – Plutonix

+1

BTWは、NumericUpDownはユーザ入力を数値に制限する方が適切でしょう。 [ask]を読んで[tour] – Plutonix

答えて

1

私はこれを変更します。これに

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    AngleScroll.Value = TextBox1.Text 
End Sub 

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    If IsNumeric(TextBox1.Text) Then AngleScroll.Value = TextBox1.Text 
End Sub 

を問題は、あなたのコードを処理していないという事実にありますテキストボックスが空の場合。

テキストボックスからすべての数値を削除すると、値は空の文字列になります。空の文字列は整数ではなく、整数にキャストされません。

テキストボックスの値を数値にすることで、テキストボックスが空の場合にキャスト変換が試行されず、エラーの危険性がなくなります。

関連する問題