Primera Parte
Segunda Parte
Bueno despues de varios dias mas o menos un semana disculpen que esta muy ocupado en mi trabajo ya le dire a mis amigos a ver si me ayudan a subir temas de programacion de los cuales ellos quieran hablar de ello y asi pues siempre tengamos algo nuevo
Ahora les traigo la ultima parte de como crear nuestro boton personalisado en esta tercera y ultima parte crearemos cuatro propiedades de tipo "image" a nuestro control y una que sera la etiqueta inteligente que se mostrara al selecionar el control y este sera el siguiente codigo para poder crear nuestro boton
como podemos notar las propiedades creadas son las siguiente
- EtiquetaBoton--->propiedad para poner etiqueta etiligente
- imgPrecionado-->propiedad image para mostrar al precionar el boton
- imgencima------>propiedad image al selecionar el boton
- imgnormal------>propiedad image en estado normal
- imgDiseable---->propiedad image cuando el boton esta desahabilitado
Bueno como veran antes de cada propiedad creada se tiene dos lineas de codigo que son las siguientes:
[Category("Mis Propiedades")]
[Description("Etiqueta Inteligente a mostrar al Pasar el Mouse en el control")]
estas lineas se las pondremos ya que nos servira cuando nosotros incluyamos nuestro boton en donde lo querramos utilizar y nos mostrara la propiedad y la descripcion de esa propiedad y para que sirve, para entender esta parte le mostrare una imagen de donde sirve o donde se ve la utilidad de estas dos lineas de codigo:
como ven la primera linea nos crea una nueva categoria en las propiedades de nuestro control personalizado y la sugunda linea nos muestra o nos sirver para poner uan descripcion de nuestra propiedad creada
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MiBotonCambiante
{
public partial class BotonCambiante : Control
{
private Image press; //Imagen a mostrar cuando se ha precionado nuestro control
private Image over; //Imagen a mostrar cuando el puntero del mouse esta encima del control
private Image normal; //Imagen a mostrar cuando nuestro control esta en estado normal
private Image Desabilitado; //Imagen a mostrar cuando nuestro control esta deshabilitado
private ToolTip etiquetaInteligente=new ToolTip(); //Etiqueta a mostrar cuando esta selecionado el control
private string etiqueta="Etiqueta del boton";
#region agregar cuatro propiedades de tipo imagen a control
[Category("Mis Propiedades")]
[Description("Etiqueta Inteligente a mostrar al Pasar el Mouse en el control")]
public String EtiquetaBoton
{
get { return etiqueta; }
set { etiqueta = value; }
}
[Category("Mis Propiedades")]
[Description("Imagen A mostrar al Precionar el control")]
public Image imgPrecionado
{
get{return press;}
set{press = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen cuando el mouse esta en el area del control")]
public Image imgencima
{
get{return over;}
set{over = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen cuando el control estado en un estado normal")]
public Image imgnormal
{
get{return normal;}
set{normal = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen a mostrar cuando el control esta desahabilitado")]
public Image imgDisable
{
get{return Desabilitado;}
set{Desabilitado = value;}
}
#endregion
public BotonCambiante()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
}
una ves creado nuestras propiedades de nuestro boton ahora sobreescribiremos los metodos el cual tendra nuestro control recordemos que nuestro control personalizado hereda las propiedades y todos los metodos del control "Button" asi que ahora lo que procederemos hacer es que nuestro boton funcione o que cambie las imagenes cuando se produsca cada evento
asi quedara cuando le modifiquemos o sobrescribamos los metodos y con esta parte terminaremos nuestro control les pondre el archivo de ejemplo para que ustedes puedan descargarlo y que vean todo lo que contiene
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MiBotonCambiante
{
public partial class BotonCambiante : Control
{
private Image press; //Imagen a mostrar cuando se ha precionado nuestro control
private Image over; //Imagen a mostrar cuando el puntero del mouse esta encima del control
private Image normal; //Imagen a mostrar cuando nuestro control esta en estado normal
private Image Desabilitado; //Imagen a mostrar cuando nuestro control esta deshabilitado
private ToolTip etiquetaInteligente=new ToolTip(); //Etiqueta a mostrar cuando esta selecionado el control
private string etiqueta="Etiqueta del boton";
#region agregar cuatro propiedades de tipo imagen a control
[Category("Mis Propiedades")]
[Description("Etiqueta Inteligente a mostrar al Pasar el Mouse en el control")]
public String EtiquetaBoton
{
get { return etiqueta; }
set { etiqueta = value; }
}
[Category("Mis Propiedades")]
[Description("Imagen A mostrar al Precionar el control")]
public Image imgPrecionado
{
get{return press;}
set{press = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen cuando el mouse esta en el area del control")]
public Image imgencima
{
get{return over;}
set{over = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen cuando el control estado en un estado normal")]
public Image imgnormal
{
get{return normal;}
set{normal = value;}
}
[Category("Mis Propiedades")]
[Description("Imagen a mostrar cuando el control esta desahabilitado")]
public Image imgDisable
{
get{return Desabilitado;}
set{Desabilitado = value;}
}
#endregion
public BotonCambiante()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
public override Image BackgroundImage
{
get
{
return base.BackgroundImage;
}
set
{
base.BackgroundImage = value;
}
}
protected override void OnClick(EventArgs e)
{
//sobreescribir el metodo
//para que cuando se de clik
//sobre el control cambie de imagen
base.Image = imgPrecionado;
base.OnClick(e);
}
protected override void OnMouseHover(EventArgs e)
{
//sobreescribir el metodo
//para que cuando el puntero del
//mouse pase sobre el control
//la imagen cambie y tambien
//se muestre nuestra propiedad
//creada de etiqueta inteligente
base.Image = imgencima;
etiquetaInteligente.SetToolTip(this, EtiquetaBoton);
base.OnMouseHover(e);
}
protected override void OnMouseLeave(EventArgs e)
{
/*sobrescribimos el metodo cuando
* el puntero del mouse deja el
* control y nuestro control
* regresa a tener la imagen que
* tendra en estado normal
*/
base.Image = imgnormal;
base.OnMouseLeave(e);
}
protected override void OnMouseDown(MouseEventArgs mevent)
{
base.Image = imgPrecionado;
base.OnMouseDown(mevent);
}
protected override void OnCreateControl()
{
//esta se ha modificado por
//conveniencia y para especificar
//algunas caracteristicas por default
//que tendra el control
base.OnCreateControl();
base.Image = imgnormal;
base.FlatStyle = FlatStyle.Flat;
base.FlatAppearance.MouseDownBackColor = Color.Transparent;
base.FlatAppearance.MouseOverBackColor = Color.Transparent;
base.FlatAppearance.BorderSize = 0;
//base.Text = "NombreBoton";
base.TextAlign = ContentAlignment.BottomCenter;
base.ImageAlign = ContentAlignment.TopCenter;
//base.Height = 40;
//base.Width = 40;
}
protected override void OnEnabledChanged(EventArgs e)
{
/*sobrescribimos el metodo
* cuando nuestro control
* esta en estado desactivado
* es decir cuando la propiedad
* enable=false y cambie de imagen
* a mostrar y cuando la propiedad
* en cuestion se true la imagen
* a mostrar se la del estado normal
*/
base.OnEnabledChanged(e);
if (base.Enabled)
base.Image = imgnormal;
else
base.Image = imgDisable;
}
}
}
Descargar archivo ENLACE CORREGIDO SALUDOS 17/01/2013