Algo muy interesante de los controles de usuarios además que le podemos agregar toda la funcionalidad que queramos, podemos usuarios en cualquier WebForms del sitio y al estar centralizados cualquier modificación que realicemos en nuestros Control se verá reflejado en todo el sitio donde estemos usando el control.

Ejemplo en código de un control de usuario:

Vamos a llamar a nuestro control UCTextBox.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UCTextBox.ascx.cs" Inherits="UCTextBox" %>

Con la directiva @ Control ASP.Net ya entiende que se trata de un control de usuario y su correspondiente CodeBehind llamado UCTextBox.ascx.cs.

Hasta el momento sólo le estamos diciendo a ASP.NET que este es un control de usuario, aún no le indicamos que hará este control. Ahora vamos a agregar un control de servidor “TextBox” y lo vamos a personalizar.

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Para que el ejemplo sea sencillo vamos a darle una funcionalidad nueva que el textbox que nos provee ASP.NET no tiene. Determinar si el contenido del TextBox es numérico y hacer algo al respecto.

Vamos a agregar algunas propiedades más al TextBox:

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" ontextchanged="TextBox1_ TextChanged"></asp:TextBox>

Propiedades necesarias para el ejemplo:

  • ontextchanged="TextBox1_TextChanged" : como vimos en el capítulo de eventos, vamos a ejecutar ese método cuando cambie el contendido del textbox.
  • AutoPostBack="True" : al estar seteado en True hace que se realice un postback y vaya al servidor.

Contenido del  UCTextBox.ascx.cs

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Text;
public partial class UCTextBox : System.Web.UI.UserControl {
protected void Page_Load(object sender, EventArgs e) {
}
//Atributo
private bool _esnumerico = false; //Propiedad public bool EsNumerico {
get { return this._esnumerico; } set { this._esnumerico = value; }
}
protected void TextBox1_TextChanged(object sender, EventArgs e) {
if (this.EsNumerico && !IsNumeric(TextBox1.Text.Trim())) {
this.TextBox1.Text = string.Empty; return;
}
//Metodo publico que evalua si el valor ingresado es numero o no.
public bool IsNumeric(object Expression) {
bool isNum; double retNum;
isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles. Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
}
}
}
return isNum;

¿Cómo funciona?

Todo está atado a la propiedad pública “bool EsNumerico” en caso que este seteada en TRUE el control va a responder de determinada manera.

El EventHandler TextBox1_TextChanged pregunta si EsNumerico es verdadero y además el contenido del textbox no es número entonces limpia el control y no continua con la acción.

protected void TextBox1_TextChanged(object sender, EventArgs e) {
if (this.EsNumerico && !IsNumeric(TextBox1.Text.Trim())) {
this.TextBox1.Text = string.Empty; return;
}
}

Ahora vamos a ver como insertar este Control de usuario en un WebForm. De la misma forma que lo hacemos con un Control web lo hacemos con un Control de usuario pero con algunas variantes.Lo primero que debemos hacer es declarar el Control de usuario en el ASPX.

<%@ Register src="UCTextBox.ascx" tagname="UCTextBox" tagprefix="uc1" %>

El tagprefix es importante ya que ese tag reemplazara al asp que tienen los controles web que nos brinda ASP.NET.

<uc1:UCTextBox ID="UCTextBox1" runat="server" />

Ahora en nuestra pagina web veremos implementado el Control de usuario.

¿Qué más nos falta? debemos determinar si la propiedad publica EsNumerico la dejamos en FALSE que es como la seteamos por default o en TRUE para que tome acciones sobre el contenido del textbox.

Agregamos esta línea en el Page_Load del webform.

this.UCTextBox1.EsNumerico = true;

Muchas veces necesitamos cargar un control de usuario dinámicamente y en tiempo de ejecución. Para ellos usaremos la siguiente sintáxis.

Control MiControl = LoadControl("UCTextBox.ascx");

Capítulos del Tutorial

En el próximo capítulo que se publica el jueves veremos: Crear una página de login, autenticación y seguridad .