WndPro c не выполняется в пользовательском контроле - PullRequest
0 голосов
/ 20 января 2020

У меня есть пользовательский элемент управления, который содержит текстовое поле, которое используется для паролей, и кнопку рядом с текстовым полем для снятия маски с пароля.

Ранее я задавал этот вопрос, когда текстовое поле находилось в форме. и код WndPro c работает нормально. Однако в UserControl это, кажется, игнорируется. Остальная часть кода предназначена для связанных событий кнопок.

Почему не выполняется код wndpro c? Я уверен, что что-то упустил, но не знаю, что.

Код выглядит следующим образом:

Friend WithEvents txtPassword As TextBox
Friend WithEvents btnMaskButton As Button
Friend WithEvents ToolTip1 As ToolTip
Const EM_SHOWBALLOONTIP = &H1503

Private Sub txtPassword_KeyDown(sender As Object, e As KeyEventArgs) Handles txtPassword.KeyDown
    If (e.Modifiers = Keys.Control) Then
        e.Handled = True
    End If
End Sub

Private Sub txtPassword_KeyUp(sender As Object, e As KeyEventArgs) Handles txtPassword.KeyUp
    Dim PasswordMasked As PwdMaskStatus = DirectCast(txtPassword.Tag, PwdMaskStatus)
    Dim CtrlMsg As String = "Password Shortcuts Disabled"
    Dim CtrlCmds() As Keys = {Keys.Control Or Keys.C, Keys.Control Or Keys.Insert,
                              Keys.Control Or Keys.X, Keys.Shift Or Keys.Delete,
                              Keys.Control Or Keys.V, Keys.Shift Or Keys.Insert,
                              Keys.Control Or Keys.A}
    For Each CtrlKey As Keys In CtrlCmds
        If (e.KeyData = CtrlKey) Then
            e.Handled = True
            ToolTip1.Show(CtrlMsg, Me, New Point(0, Me.Height + 2), 6000)
            Exit For
        End If
    Next

    ToolTip1.SetToolTip(txtPassword, "Password")
End Sub

Private Sub txtPassword_SizeChanged(sender As Object, e As EventArgs) Handles txtPassword.SizeChanged
    Dim ButtonY As Integer

    ButtonY = CInt((txtPassword.Height / 2) - (btnMaskButton.Height / 2) + 0.5)
    btnMaskButton.Location = New Point(btnMaskButton.Location.X, ButtonY)
End Sub

Private Sub txtPassword_Validating(sender As Object, e As CancelEventArgs)
    If CheckEmpty(txtPassword.Text) Then
        Call HidePassword()
        e.Cancel = True
    Else
        e.Cancel = False
    End If
End Sub

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If (m.Msg = EM_SHOWBALLOONTIP) Then
        m.Result = IntPtr.Zero
        Return
    End If

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