繁体   English   中英

调用成员事件vb.net 2005时GroupBox出现问题

[英]Problem with GroupBox when calling member event vb.net 2005

我有这个课:

Public Class common
Public Function NumbersOnlyEvent(ByVal CtrlName As String, ByVal type As String, ByVal formName As Object) As String

    Dim ctrlType As String = "System.Windows.Forms." & type

    For Each objcontrol As Control In formName.Controls

        If objcontrol.GetType.ToString = ctrlType And objcontrol.Name.Contains(CtrlName) Then

            AddHandler objcontrol.KeyPress, AddressOf NumbersOnlyHandler

        End If

    Next

    Return True

End Function 'NumbersOnlyEvent

Private Sub NumbersOnlyHandler(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

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

End Sub
 End Class

我有这个表格类:

Public Class addbet
Dim CommonFunc As common = New common

Private Sub addbet_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'AddHandler Events
    CommonFunc.NumbersOnlyEvent("txtSbcNum", "TextBox", Me)
End Sub
End Class

我有这个文本框:

txtSbcNum1
txtSbcNum2
.
.
.
txtSbcNum15

当我通过在Form_Load上调用CommonFunc.NumbersOnlyEvent(“ txtSbcNum”,“ TextBox”,Me)添加事件处理程序时,它可以正常工作。 但是,当我将文本框放在GroupBox上时,它不起作用,但是当我再次将其删除到GroupBox时,它又可以工作了。 我错过了什么吗?

问题在于表单控件不包含子控件。 因此,组框是在窗体上找到的,但在文本框上却找不到,因为它是组框的子级。

更改此行:

CommonFunc.NumbersOnlyEvent("txtSbcNum", "TextBox", Me)

对此:

CommonFunc.NumbersOnlyEvent("txtSbcNum", "TextBox", Me.GroupBox1)

以便在组框中找到该文本框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM