验证文本框

时间:2012-10-01 03:52:32

标签: vb.net winforms isnumeric

我正在使用Windows Forms进行简单的应用程序,我有一个问题......

我的表单有15个文本框,我想使用事件KeyPress或验证来验证每个人。我有这个代码正在运行:

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

但是我有15个文本框(可能更多),并且在每个文本框事件中都是一个有点单调的副本/ pase这个代码。你可以教我使用函数吗?

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

我正在寻找正确的方法吗?

英语是我的第二语言,我也在学习编程。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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子例程。我将发件人转换为文本框,以找出触发了哪个文本框按键事件。