Проблема с GroupBox при вызове события участника vb.net 2005 - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть этот класс:

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

Когда я добавляю обработчик событий, вызывая CommonFunc.NumbersOnlyEvent ("txtSbcNum", "TextBox", Me) в Form_Load, он работает нормально. Но когда я помещаю свои текстовые поля в GroupBox, он не работает, но когда я снова удаляю его в GroupBox, он снова работает. Я что-то пропустил?

1 Ответ

1 голос
/ 09 сентября 2011

Проблема в том, что элементы управления формой не включают дочерние элементы управления. Таким образом, групповое поле находится в форме, но не в текстовом поле, поскольку оно является дочерним элементом группового поля.

Изменить эту строку:

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

к этому:

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

чтобы найти текстовое поле в групповом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...