Integración del control numericUpDown en Visual Studio 2003

Fecha: 17/Oct/2004 (17/10/2004)
Autor:
Andrés Giménez Muñoz e-mail: andres.gimenez@eresmas.net

 


Integración del Control numericUpDown en Visual Studio 2003
Este artículo es continuación de Control numericUpDown para asp.net en el que se describía como crear un control numericUpDown para asp.net.

La verdadera fortaleza de los controles web es su integración con Visual Studio. En la que los podemos insertar en una página asp.net con un simple arrastre de ratón y configurarlos con unos simples click de ratón.

Por eso ahora vamos a ver como adaptar nuestro control web para que se pueda usar desde Visual Studio con toda la potencia que este nos da.

Contenido
Introducción
Utilización de atributos
Atributos de las propiedades
Atributos de la clase numericUpDown
Atributos de ensamblado
Conclusión

Introducción
Para integrar un control web en Visual Studio se utiliza los atributos. En los cuales se puede definir parámetros como la etiqueta que inserta el VS a nuestra pagina asp.net, la descripción de cada atributo, su valor por defecto, el editor con el que se modifica cada atributo, ...

Utilización de atributos
Un atributo es información que se puede añadir a los metadatos de un módulo de código. Esta información puede ser referente tanto al propio módulo o el ensamblado al que pertenezca como a los tipo de datos definidos en él.

Para colocar un atributo a un elemento basta prefijar la definición de dicho elemento con una estructura de esta forma:

[<nombreAtributo>(<parámetros>)]

Esta estructura ha de colocarse incluso antes que cualquier modificador que pudiese acompañar la definición del elemento a atribuir.

Atributos de la clase numericUpDown
Primero definiremos los atributos que asignaremos a nuestra clase de control web. Con lo que definiremos los atributos ToolboxData y ToolboxBitmap de la siguiente forma.


	/// 
	/// TextBox con botones de más menos que se ejecuta en el cliente.
	/// 
	[ToolboxData("<{0}:NumericUpDown runat=server></{0}:NumericUpDown>")]
	[ToolboxBitmap(typeof(NumericUpDown), "NumericUpDown.bmp")]
	public class NumericUpDown:System.Web.UI.WebControls.TextBox
        {
           ......
        }
  1. Con el atributo ToolboxData definimos la etiqueta predeterminada que inserta el VS al arrastrar y soltar nuestro control web. Asi se insertara una etiqueta de la forma:

    <mycontrols:numericUpDown id="Numericupdown1" runat="server"></mycontrols:numericUpDown>
  2. Con ToolboxBitmap se define el icono que representa a nuestro control web.
Atributos de las propiedades.

Ahora vamos a definir los atributos para las propiedades de nuestro control:


	/// 
	/// Indica si los botones tienen que aparecer en orden inverso.
	/// 
	[DescriptionAttribute("Indica si los botones tienen que aparecer en orden inverso.")]
	[BindableAttribute(true)]
	[CategoryAttribute("Appearance")]
	[DefaultValueAttribute(false)]
	public bool PositionInvers
        {
           ......
        }

  1. DescriptionAttribute nos permite definir una pequeña descripción que aparecerá junto a las propiedades del control.


     
  2. BindableAttribute Inidca si la propiedad se puede enlazar a datos.

  3. CategoryAttribute Con este atributo definimos en que categoría aparecerá nuestra propiedad. Pude tomar los valores:
     

    Categoría Descripción
    Action Propiedades relativas a las acciones disponibles.
    Appearance Propiedades que afectan a la forma en que aparece una entidad.
    Behavior Propiedades que afectan a la forma en que actúa una entidad.
    Data Propiedades relativas a los datos.
    Default Las propiedades que no poseen categoría se clasifican como pertenecientes a esta categoría predeterminada.
    Design Propiedades que sólo están disponibles en tiempo de diseño.
    DragDrop Propiedades relativas a las operaciones de arrastrar y colocar.
    Focus Propiedades relativas al foco.
    Format Propiedades que afectan al formato.
    Key Propiedades que afectan al teclado.
    Layout Propiedades relativas a la presentación de los elementos.
    Mouse Propiedades relativas al mouse (ratón).
    WindowStyle Propiedades relativas al estilo de ventana de los formularios de nivel superior.

  4. DefaultValueAttribute Define un valor por defecto.

Ahora vamos a ver un atributo más interesante que nos permitirá definir como se editan los valores de las propiedades. Como ejemplo tomaremos la URL de las imágenes de los botones de más y menos.

///


/// Imagen del boton decrementar.
///

[EditorAttribute(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor))]
[DescriptionAttribute("Imagen del boton decrementar.")]
[BindableAttribute(true)]
[CategoryAttribute("Appearance")]
[DefaultValueAttribute("")]
public string ImageUrlMinus
{
   ...
}

Se ha definido el atributo EditorAttribute en el que se define una clase derivada de UITypeEditor. Con esto podremos rellenar el valor de la propiedad de una forma más sencilla

Atributos de ensamblado

Por ultimo nos queda definir un atributo que afectara a todo el ensamblado. Se trata de TagPrefix que nos permite definir el prefijo de los tag de todos los controles que se encuentren en nuestro ensamblado. Lo normal no es insertar este atributo en el código del control, si no, en el fichero AssemblyInfo.cs que nos genera el VS para introducir los atributos del ensamblado.

[assembly: TagPrefix("controls", "mycontrols")]

Así cuando dejemos al VS que inserte los controles por nosotros introducirá el prefijo seleccionado por nosotros.

<mycontrols:numericUpDown id="Numericupdown1" runat="server"></mycontrols:numericUpDown>

Conclusión
La verdadera potencia de los controles web nos viene derivada de herramienta RAD como Visual Studio. Las cuales nos permite insertar controles en nuestras páginas asp.net de una forma sencilla. Para que podamos explotar la máxima posibilidades a nuestros controles debemos hacer que estos editores sepan como funcionan. Así que deberemos definir los atributos correspondientes a cada propiedad.


ir al índice

Fichero con el código de ejemplo: andrechi_int_vs_con_numeric.zip - 16.1 KB