为vb.net 2005中的每个控件动态调用keypress方法

时间:2011-09-08 16:02:49

标签: vb.net visual-studio

我正在开发一个项目,包括为每个控件调用某种类型的方法,我有这个代码:

 Private Sub txtBcNum1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBcNum1.KeyPress

    If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then
        e.Handled = False
    Else
        e.Handled = True
    End If

End Sub

如果我想在文本框中只允许数字和退格,这段代码就像一个魅力。

问题: 我有15个文本框(txtBcNum1,txtBcNum2,....,txtBcNum15),在每个文本框的KeyPress方法中调用此函数的最佳方法是什么,而不是手动将其添加到 KeyPress 方法?

1 个答案:

答案 0 :(得分:1)

您可以向Handles子句添加多个控件:

Private Sub txtBcNum1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
            Handles txtBcNum1.KeyPress, txtBcNum2.KeyPress, txtBcNum3.Keypress, ...

这样就可以为每个控件调用sub。如果要在不同的表单中重用此代码,最好创建一个从Textbox继承的新控件,该控件可能被称为NumericTextBox并处理其自己的KeyPress事件。这样,您就不必在使用此控件的表单中添加任何代码。

另外,您是否考虑过使用内置的NumericUpDown控件来实现相同的目的?