0

Windows フォームを使用して簡単なアプリケーションを実行していますが、質問があります...

私のフォームには 15 個のテキスト ボックスがあり、イベント KeyPress または検証を使用して全員を検証したいと考えています。私は働いているこのコードを持っています:

If Not IsNumeric(txtn1.Text) Then
e.Cancel = True
ErrorProvider1.SetError(txtn1, "")
Else
something(txtn1.text)
End If

しかし、私は15個のテキストボックス(おそらくそれ以上)を持っており、すべてのテキストボックスイベントでこのコードを少し平凡にコピー/貼り付けています。関数を使用してこれを行う方法を教えてもらえますか?

Public Function isnum(ByVal txt As TextBox, ByVal errpro as ErrorProvider) As Double
If Not IsNumeric(txt.Text) Then
e.Cancel = True    <-------------------------------This dont work
errpro.SetError(txt, "")
End If    
End Function


Private Sub txtn1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtKLDC.Validating

if isnum(txtn1, ErrorProvider1) then
something(txtn1.text)
end if

これを行う正しい方法を探していますか?

英語は私の第二言語で、プログラミングも学んでいます。

4

2 に答える 2

1

一般的な KeyPress イベントを使用してから、イベントを発生させた TextBox である送信者オブジェクトを使用し、それを TextBox にキャストします。

Private Sub txt_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtn1.KeyPress, txtn2.KeyPress, txtn3.KeyPress, txtn4.KeyPress, txtn5.KeyPress
    Dim tb As TextBox = CType(sender, TextBox)
    If Not IsNumeric(tb.Text) Then
        e.Handled = True
        ErrorProvider1.SetError(tb, "")
    Else
        something(tb.Text)
    End If
End Sub
于 2012-10-01T03:56:53.460 に答える
0

このコードで:

Private Sub NumericValidation_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress, TextBox2.KeyPress, upto 16500 or so is possible...

Dim txt As TextBox = CType(sender, TextBox)
If Not IsNumeric(txt.Text) Then
e.Cancel = True
ErrorProvider1.SetError(txt, "")
Else
something(txt.text)
End If
End Sub

Textbox の KeyPress イベント ハンドラーのそれぞれを単一の NumericValidation_KeyPress サブルーチンに割り当てる方法に注意してください。送信者を Textbox にキャストして、どのテキストボックス キープレス イベントが発生したかを調べました。

于 2012-10-01T04:04:16.237 に答える