【问题标题】:Validating Textboxs验证文本框
【发布时间】:2012-10-01 03:52:32
【问题描述】:

我正在使用 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

我正在寻找正确的方法来做到这一点?

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

【问题讨论】:

  • 看看这里:stackoverflow.com/questions/12659844/…。这与您所要求的基本相同。您将每个文本框连接到同一个事件处理程序(我提供的示例使用按钮......但原理相同)。

标签: vb.net winforms isnumeric


【解决方案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

【讨论】:

  • 不错!这就是我一直在寻找的
  • @user1342394 很高兴为您提供帮助
【解决方案2】:

使用此代码:

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

请注意我如何将文本框的每个 KeyPress 事件处理程序分配给单个 NumericValidation_KeyPress 子例程。我将发件人投射到一个文本框中,以找出触发了哪个文本框按键事件。

【讨论】:

  • 为什么是 Dim tb?你不使用那个变量
  • 大声笑,你标记了你的问题 C# 和 VB.Net,我最初使用了 c# 语法 - 你可以看到编辑历史。然后查看 Marks 的答案,我改变了它 - 看起来你现在已经足够自己发现问题了:)
猜你喜欢
  • 1970-01-01
  • 2012-07-30
  • 2011-09-18
  • 2012-11-18
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多