Componentes de Classes utilizando herança e com ícone

neste primeiro artigo vamos tocar num ponto interessante para um desenvolvedor, é quando ele pode desenvolver um componente e permite que outros possam usar o componente feito...

Componentes de Classes utilizando herança e com ícone

 

Olá pessoal, neste primeiro artigo vamos tocar num ponto interessante para um desenvolvedor, é quando ele pode desenvolver um componente e permite que outros possam usar o componente feito, e neste artigo vamos abordar sobre:

 

  • Herança
  • Windows Control Library
  • Visual Studio 2005, 2003 e C#, VB.NET

Obs.: Os códigos descritos a seguir não terão o intuito de mostrar melhores práticas de codificação nem meios de ganharem performance nas aplicações, os códigos serão meios didáticos para atingirem o conceito descrito no tema do artigo.

 

Pois bem, neste artigo vamos criar nosso controle ( um textbox ) com a  finalidade de validar e-mails. Vamos ao que interessa.

 

Abra o Visual Studio, seja 2003 ou 2005, seja c# ou vb.net ( a gosto do cliente ), abra um projeto Windows Control Library.



 

Será gerado o arquivo UserControl1.vb, Delete-o.

 

Inclua um arquivo de classe. ( clique com o botão direito no projeto dentro do solution explore e vá na opção add e new item, selecione o item classe e dê um nome para o seu controle ) o nome dado por este arquivo fica a seu critério, para nossos testes escolhi este aqui: ctrlEmail e nesta classe herdaremos o nameSpace Windows.Forms.TextBox para que possamos estender a funcionalidade de um textbox, adicionando uma propriedade que verifica se o que foi digitado é um e-mail válido. Veja abaixo o código:

 

Vb.Net

Imports System.Windows.Forms

Imports System.Text.RegularExpressions

 

<System.Drawing.ToolboxBitmap("C:\Documents and Settings\udcsan1\My Documents\Cappe\pbr\about.ico")> _

Public Class ctrlEmail

Inherits TextBox

 

Public ReadOnly Property EmailValido() As Boolean

Get

Dim strRegex As String = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + "\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"

Dim re As Regex = New Regex(strRegex)

If (re.IsMatch(MyBase.Text)) Then

Return (True)

Else

Return (False)

End If

End Get

End Property

End Class

 

C#

using System.Windows.Forms;

using System.Text.RegularExpressions;

 

[System.Drawing.ToolboxBitmap(@"C:\Documents and Settings\udcsan1\My Documents\Cappe\pbr\about.ico")]

public class ctrlEmail : TextBox

{

public bool EmailValido

{

get

{

string strRegex = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}" + "\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";

Regex re = new Regex(strRegex);

if ((re.IsMatch(base.Text)))

{

return (true);

}

else

{

return (false);

}

}

}

}

 

Compile e feche o projeto, já temos o objetivo alcançado, vamos verificar e depois compreender o que aconteceu.

 

Crie outro projeto, adicione nosso controle clicando na toolbox e depois em add/Remove items..., localize a dll que foi gerada no projeto anterior através do browser como mostra na figura.

 

 

 

Agora adicione o controle e no projeto que você criou teste o novo textbox, que tem a funcionalidade de validar e-mails.

 

 

 

Coloque um botão para executar o nosso teste e insira o código abaixo.

 

VB.NET

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If CtrlEmail1.EmailValido Then

MessageBox.Show("Email Válido.", "Email", MessageBoxButtons.OK)

Else

MessageBox.Show("Email inválido.", "Email", MessageBoxButtons.OK)

End If

End Sub

C#

private void button1_Click(object sender, System.EventArgs e)

{

if (ctrlEmail1.EmailValido)

{

MessageBox.Show("Email Válido.","Email", MessageBoxButtons.OK);

}

else

{

MessageBox.Show("Email inválido.","Email", MessageBoxButtons.OK);

}

}

 

Vamos explicar o que você precisa saber, o Atributo ToolboxBitmap é o responsável por ligar o ícone que você escolheu, junto ao Assembly gerado, para este exemplo ser rápido e eficaz utilizamos o projeto Windows Controls Library que traz namespaces que trabalham com controles de formulários e nos dão a oportunidade de ‘extendê-los’ sem ter a necessidade de termos que fazer esse trabalho manualmente, por isso que nós excluímos o arquivo que normalmente, neste tipo de projeto nós desenhamos o controle a ser usado, e nada mais do que interessante é utilizar herança para herdar nosso controle criando o TextBox com uma funcionalidade de validação, sendo que na linha que tem a instrução: if ((re.IsMatch(base.Text))) também recorremos às funcionalidades de Herança. Lembram-se que base se refere à classe base? Pois a nossa classe base é o TextBox, e só para explicar sobre a propriedade EmailValido ela aparece apagada na aba properties porque nossa propriedade é somente por leitura.

 

Como dito no início do artigo o código em si não é o importante, pois validar e-mails é muito simples e tem mil maneiras de se conseguir esse feito, mas espero que tenham entendido sobre algumas funcionalidades que podem ser muito poderosas se bem utilizadas como herança e criação de controles.

Gostaram, Dúvidas? Opinem.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados