Autor Tema: En VB .net, para un control de usuario, no puedo ejecutar codigo evento Click  (Leído 4002 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dudu

  • The newbie
  • *
  • Mensajes: 1
Saludos.

A decir verdad, soy bastante novato en en VB .net, así que disculpen la torpeza.  :phew:

Tengo una solución con dos proyectos. En uno de los proyectos he creado un Control de Usuario que intenta emular el comportamiento de un Button (Al que llamé gButton). Dicho control de usuario muestra una imagen de fondo en la propiedad BackgroundImage, y tiene un Label (que uso para mostrar el texto del gButton). Al usar la clase en en un formulario, en tiempo de ejecución el MouseEnter, MouseLeave del Label (dentro del Control de Usuario) funcionan de maravilla para mostrar una imagen al ponerse sobre y al salir de él. ES IMPORTANTE HACER NOTAR QUE EL LABEL1 TIENE UN DOCK = FILL, por lo que ocupa toda el área del gButton.

El problema es el siguiente: En el formulario, cuando quiero agregar código al evento Click del gButton1, éste no se ejecuta, pues, el clic es interceptado por el Label1 que está encima de toda el área del gButton1.

 :huh:Pregunta: ¿Cómo hago para que se ejecute el código que escriba en procedimiento gButton1_Click? o bien, ¿puedo escribir código de evento para gButton1.Label1_Click?

O mejor aún, un enlace a un botón que implemente una imagen de fondo (sin texto), y yo pueda poner un texto para cada botón... y por supuesto, que al instanciarlo pueda escribir código para el evento click.

De antemano Gracias.  :thumbsup:

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:En VB .net, para un control de usuario, no puedo ejecutar codigo evento Click
« Respuesta #1 : diciembre 17, 2012, 11:37:40 am »
es probable que ya no regreses, porque te veo con un único post hasta este momento, y en otros días no hubiera contestado nada... pero estamos cerca de navidad y los buenos sentimientos andan pululando en el aire.....


has probado quitándole al label el Dock fill.


BT: para que utilizas el label en el control?, el button tienen la propiedad Text, donde puedes poner el texto del botón; aun y cuando el botón tenga una imagen.
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado m.wilian

  • MiembrosReales
  • *
  • Mensajes: 43
Re:En VB .net, para un control de usuario, no puedo ejecutar codigo evento Click
« Respuesta #2 : diciembre 17, 2012, 12:07:42 pm »
Debes declarar eventos a nivel de control, por ejemplo

 
Código: [Seleccionar]
Public Class MiControl
        Inherits <clasebase>
       
        Public Event MiEvento(<parametros>)
       
End Class

Como dices que tienes un control label con la propiedad Dock.Fill, significa que quien recibe el evento es el label, no el control gButton por lo que lo mas adecuado es controlar primero el evento click del label y luego pasarlo a tu evento personalizado

Dentro de la clase MiControl

Código: [Seleccionar]
  Private Sub MiLabel_Click(sender as object, e as eventargs) handles MiLabe.Click
     RaiseEvent MiEvento(<parametros>)
  End sub

Investiga un poco sobre eventos personalizados y delegados, no se que es lo que inventas con lo demás.
 
Citar
un enlace a un botón que implemente una imagen de fondo (sin texto), y yo pueda poner un texto para cada botón... y por supuesto, que al instanciarlo pueda escribir código para el evento click.

Desconectado Jonhyrey

  • Sv Full Member
  • *
  • Mensajes: 559
Re:En VB .net, para un control de usuario, no puedo ejecutar codigo evento Click
« Respuesta #3 : diciembre 28, 2012, 04:16:58 pm »
Yo te recomiendo hacer un proyecto exclusivo para controles de usuario, esto te va a permitir que al utilizar el botón en tu proyecto principal, lo unico que vas a poder ver son los eventos que expusiste en el elemento usercontrol que hereda al system.button.

Es decir que para poder hacer uso de los eventos label click, label.text, etc vas a tener que exponerlos en esa clase. Esto te limita un poco, pero vas a lograr tener controles con los unicos manejadores de eventos, propiedades, funciones que tu queres manejar.

Saludos



freezer27

  • Visitante
Mejor usa DevExpress :P