Sv Community El Salvador
Soporte y Tecnología => Programación => .NET => Topic started by: dudu on December 17, 2012, 11:05:27 am
-
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:
-
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.
-
Debes declarar eventos a nivel de control, por ejemplo
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
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.
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.
-
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
-
Mejor usa DevExpress :P