Vb.net 验证文本框

Vb.net 验证文本框,vb.net,winforms,isnumeric,Vb.net,Winforms,Isnumeric,我正在用Windows窗体做一个简单的应用程序,我有一个问题 我的表单有15个文本框,我想使用事件按键或验证来验证每个人。我有一个有效的代码: If Not IsNumeric(txtn1.Text) Then e.Cancel = True ErrorProvider1.SetError(txtn1, "") Else something(txtn1.text) End If 但是我有15个文本框(可能更多),并且在每个文本框事件中都有一点单调地复制/复制这些代码。你能教我用函数做这个吗 P

我正在用Windows窗体做一个简单的应用程序,我有一个问题

我的表单有15个文本框,我想使用事件按键或验证来验证每个人。我有一个有效的代码:

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
公共函数isnum(ByVal txt作为文本框,ByVal errpro作为ErrorProvider)作为双精度
如果不是数字(txt.Text),则

e、 Cancel=True使用公共按键事件,然后使用sender对象,即发起事件的文本框,并将其强制转换为文本框

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
使用此代码:

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的每个按键事件处理程序分配给单个NumericValidation\u KeyPress子例程的。我将发送者强制转换到文本框中,以找出触发了哪个文本框按键事件。

请查看此处:。这基本上和你的要求是一样的。您将每个文本框连接到同一个事件处理程序(我提供的示例使用按钮..但原理相同)。很好!那正是我要找的for@user1342394很高兴能帮上忙为什么?你不使用那个变量lol,你把你的问题标记为C#和VB.Net,我最初使用的是C#语法,你可以看到编辑历史。然后复习成绩,回答我改了——看起来你已经足够好了,可以发现你自己现在的问题了:)