none
ToolTip Ballon en Textbox para password RRS feed

  • Pregunta

  • Hola, que tal!!! Tengo el siguiente problemita y espero que me puedan ayudar. Tengo un fomulario de Login, el cual tien un textbox para introducir el nombre de usuario, y otro textbox para la contraseña. El textbox de la contraseña tiene la propiedad UseSystemPasswordChar = TRUE para que muestre los caracteres como círculos. El problema es el siguiente:

    Si al entrar el foco al txtContraseña, la tecla "BloqMayus" está activada, me aparece un BalloonToolTip avisando la situación. Pero el problema es que no quiero que me aparezca ese tooltip predefinido, sino que quiero poner un tooltip personalizado.

    Si al txtContraseña le desactivo la propiedad UseSystemPasswordChar, como asi también la propiedad PasswordChar, no aparece mas el Balloon, pero yo necesito que el contenido de ese campo sean asteriscos o círculos.

    La pregunta es ¿Cómo puedo hacer para deshabilitar ese tooltip por defecto?

    Despues de deshabilitarlo, quiero programar un tooltip personalizado, con texto mas corto, que cumpla la misma función. Es decir, que se muestre cuando el foco entre el txtContraseña y esté habilitada la tecla BloqMayus. He intentado con el código que les muestro mas abajo, pero solo aparece el tooltip cuando paso el mouse encima del textbox. yo quiero que muestre el tooltip si esta activa Bloqmayus independientemente de si el mouse esta encima o no del textbox.

    Este es el código:

        Private Sub txtContrasenia_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtContrasenia.Enter
            If Control.IsKeyLocked(Keys.CapsLock) Then

                ToolTip1.SetToolTip(txtContrasenia, "La Tecla ""BloqMayus"" está activada. Esto podía provocar que introduzca una contraseña incorrecta")

            End If
        End Sub

    también intenté con el evento GotFocus, pero el resultado es el mismo

    Desde ya muchas gracias. Leo
    viernes, 10 de julio de 2009 5:08

Todas las respuestas

  • Para desahbilitarlo debes de capturar el emnsaje EM_SHOWBALLOONTIP  y para ello tienes que hacer un control propio ahi tienes un ejemplo

    public class CustomMaskedTextBox : MaskedTextBox {
    private const int EM_SHOWBALLOONTIP = 0x1503;
    public bool DisableBalloonTips { get; set; }

    protected override void WndProc(ref Message m) {
    if (m.Msg == EM_SHOWBALLOONTIP && DisableBalloonTips) {
    m.Result = (IntPtr) 0;
    return;
    }
    base.WndProc(ref m);
    }
    }


    Oscar Avarez Guerras - Arquitecto Software en I3B (I+D+I) Blog:http://geeks.ms/blogs/oalvarez Por favor marca como respuesta si te ha ayudado esta respuesta
    viernes, 10 de julio de 2009 7:49