none
¿Como hago para que el HighLight de un Custom Control funcione igual que el de un Button? RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy desarrollando un control sencillo, un control que se compone de dos "Labels".

    1. MouseEnter en el control y elementos que lo componen (los dos labels), cambio el texto a "Dentro".
    2. MouseLeave en el control y elementos que lo componen (los dos labels), cambio el texto a "Fuera".
    Private Sub InteractiveItem_MouseEnter(sender As Object, e As EventArgs)
          If (Me.ClientRectangle.Contains(Me.PointToClient(MousePosition))) Then
             If (Not isOn) Then
                isOn = True
                lblTexto.Text = "Dentro"
                Me.Invalidate()
             End If
          End If
       End Sub
    
       Private Sub InteractiveItem_MouseLeave(sender As Object, e As EventArgs)
          If (Not Me.ClientRectangle.Contains(Me.PointToClient(MousePosition))) Then
             If (isOn) Then
                isOn = False
                lblTexto.Text = "Fuera"
                Me.Invalidate()
             End If
          End If

    Hasta aquí todo perfecto. El problema viene cuando dos controles comparten parte del mismo espacio, al salir de uno y entrar en el otro, si aun está dentro del área que ocupa el control, no ejecuta el contenido del MouseLeave. No quiero quitar la validación del area ya que con esto evito tener que ejecutar lo mismo al entrar y salir de elementos que componen dicho control.

    Si se hace esto mismo con dos Button que compartan parte del mismo espacio, esto no pasa.

    

    ¿Alguna idea de como poder solucionar este punto?

    Gracias por su ayuda y que acaben de pasar un buen día.

    lunes, 7 de octubre de 2019 17:38

Respuestas

  • Hola Moneitor

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comparto a continuación el siguiente enlace 

     https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/creating-a-control-that-has-a-customizable-appearance

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    • Marcado como respuesta Moneitor domingo, 13 de octubre de 2019 11:44
    miércoles, 9 de octubre de 2019 22:57