Você está na página 1de 5

Nem sempre os componentes atuais do ASP.

NET atendem por completo as nossas


necessidades. Com isso muitas vezes precisamos implementar funcionalidades e que tambm
na maioria das vezes necessitam ser reutilizadas. O funcionalidade de um UserControl, essa,
criar controles personalizados que possam ser reutilizados.
esse o objetivo desse artigo de hoje, criar um UserControl que possua funcionalidade que
possam ser reutilizadas como se fosse um componente.
Para dar inicio, abra o Visual Studio, crie um novo WebSite. No Meu caso estou usando o Visual
Studio 2010, mais pode ser qualquer verso.

Como exemplo, vou criar um UserControl que tem como funcionalidade autenticar e receber o
login e a senha do usurio. Nele incluirei 2 Labels, 2 TextBox, 1 LinkButton e 2 Button. E ficar
da seguinte formar.
01
<asp:Panel ID="pnlLogin" runat="server" GroupingText="Login">
02
<asp:Label ID="lblUsuario" runat="server" Text="Usuario" /><br />
03
<asp:TextBox ID="txtUsuario" runat="server" /><br />
04
<asp:Label ID="lblSenha" runat="server" Text="Senha" /><br />
05
<asp:TextBox
ID="txtSenha" runat="server" TextMode="Password" /><br />
06 <br />
07
<asp:LinkButton
ID="lnkEsqueceuSenha" runat="server" Text="Esqueceu a senha?" />
08 <br />
09 <br />
10
<asp:Button
ID="btnAutenticar" Text="Autenticar" runat="server" />
11
<asp:Button ID="btnCadastrar" Text="Cadastrar" runat="server" />
12 </asp:Panel>
Com esse cdigo j temos a tela de login, porem no o mais importante que so os eventos.
Para que ele seja funcional, iremos atribuir eventos aos Botes e possibilitar que um WebForm
recupere a ao do usurio por meio do evento acionado. Para iniciar criamos o evento Click
dos botes e do LinkButon.
01
<asp:Panel ID="pnlLogin" runat="server" GroupingText="Login">
02
<asp:Label ID="lblUsuario" runat="server" Text="Usuario" /><br />
03
<asp:TextBox ID="txtUsuario" runat="server" /><br />
04
<asp:Label ID="lblSenha" runat="server" Text="Senha" /><br />
05
<asp:TextBox
ID="txtSenha" runat="server" TextMode="Password" /><br />
06 <br />
07
<asp:LinkButton
ID="lnkEsqueceuSenha" runat="server" Text="Lembrar
senha"OnClick="lnkLembrarSenha_Click" />
08 <br />
0
9
<br />
1
0
<asp:Button
ID="btnAutenticar" Text="Autenticar" runat="server" OnClick="btnAutent
icar_Click" />
1
1
<asp:Button
ID="btnCadastrar" Text="Cadastrar" runat="server" OnClick="btnCadastra
r_Click" />
12 </asp:Panel>
01
protected void btnAutenticar_Click(object sender, EventArgs e)
02 {
03

04 }
05
06
protected void lnkLembrarSenha_Click(object sender, EventArgs e)
07 {
08

09 }
10

11
protected void btnCadastrar_Click(object sender, EventArgs e)
12 {
13
14 }
Se voc tentar recuperar o evento do boto Autenticar por exemplo vai ver que no ser
possvel, para isso vamos criar agora os eventos necessrios.
1 // Delegate
2
public delegate void AutenticarEventHandler(object sender,
System.EventArgs e);
3
public delegate void LembrarSenhaEventHandler(object sender,
System.EventArgs e);
4
public delegate void CadastrarEventHandler(object sender,
System.EventArgs e);
5

6 // Event
7
public event AutenticarEventHandler Autenticar;
8
public event LembrarSenhaEventHandler LembrarSenha;
9
public event CadastrarEventHandler Cadastrar;
Criamos um Event e um Delegate para cada Button e LinkButton e por meio do evento Click
deles que faremos a chamada desses Eventos personalizados.
01
protected void btnAutenticar_Click(object sender, EventArgs e)
02 {
03
if (Autenticar != null) Autenticar(sender, e);
04 }
05
06
protected void lnkLembrarSenha_Click(object sender, EventArgs e)
07 {
08
if (LembrarSenha != null) LembrarSenha(sender, e);
09 }
10

11
protected void btnCadastrar_Click(object sender, EventArgs e)
12 {
13
if (Cadastrar != null) Cadastrar(sender, e);
14 }
Agora que temos nosso UserControl, abra o Default.aspx em modo designer e arraste o
UserControl para ele e adicione um Label.
01
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
02
03
<%@ Register src="LoginControl.ascx" tagname="LoginControl"
tagprefix="uc1" %>
04

05
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
06

07
<html xmlns="http://www.w3.org/1999/xhtml">
08
<head runat="server">
09 <title></title>
10 </head>
11 <body>
12
<form id="form1" runat="server">
13 <div>
14
<uc1:LoginControl ID="LoginControl1" runat="server" />
15
<br />
1
<asp:Label ID="lblResultado" runat="server" ForeColor="Red"></
6 asp:Label>
17 </div>
18 </form>
19 </body>
20 </html>
Para finalizar, vamos criar os eventos necessarios no CodeBehind do Default.aspx para que
nosso exemplo funcione.
01
protected void Page_Load(object sender, EventArgs e)
02 {
03
LoginControl1.Autenticar
+= new LoginControl.AutenticarEventHandler(LoginControl1_Autenticar)
;
0
4
LoginControl1.LembrarSenha
+= new LoginControl.LembrarSenhaEventHandler(LoginControl1_LembrarSe
nha);
05
LoginControl1.Cadastrar
+= new LoginControl.CadastrarEventHandler(LoginControl1_Cadastrar);
06 }
07

08 // Evento Autenticar
09
protected void LoginControl1_Autenticar(object sender, EventArgs e)
10 {
11 lblResultado.Text = "Evento [AUTENTICAR]";
12 }
13
14 // Evento Lembrar Senha
15
protected void LoginControl1_LembrarSenha(object sender, EventArgs e)
16 {
17 lblResultado.Text = "Evento [LEMBRAR SENHA]";
18 }
19

20 // Evento Cadastrar
21
protected void LoginControl1_Cadastrar(object sender, EventArgs e)
22 {
23 lblResultado.Text = "Evento [CADASTRAR]";
24 }
Assim, temos o resultado abaixo.

Você também pode gostar