LAYERDEV

 Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Como criar um CompositeControl, TextBox com Validador



Data Publicação: 22/9/2006 13:16:57
Total de visualizações: 5123

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


Olá Amigos,

 

Às vezes precisamos criar um componente para suprir alguma necessidade particular, mesmo o Visual Studio vir com uma infinidade de componentes nativos, pode ser que não seja o suficiente para o que você precisa, já se deparou com um problema assim?

 

Muitos anos de programação, na maioria das vezes também é sinônimo de muitos componentes e classes próprias, no meu caso, tenho várias classes que reutilizo em meu programas muitas vezes, e a flexibilidade do .NET me permite usar essas classes tanto em aplicativos Windows como Web.

 

Os componentes podem ser baseados (herdados) de um componente já existente, gerando um outro componente com uma característica especial, por exemplo, para criar um TextBox que mude de cor quando recebe o foco, basta criar um componente herdado do TextBox e adicionar atributos nele, a declaração da classe seria a seguinte:

 

<DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> _

Public Class WebCustomControl1

    Inherits TextBox

 

Mas e como criar um componente composto, baseado em vários componentes diferentes, como por exemplo, um TextBox com um RequiredFieldValidator?

 

É o que vou demonstrar aqui, como criar um CompositeControl:

 

Option Strict On

Imports System

Imports System.ComponentModel

Imports System.Drawing

Imports System.Security.Permissions

Imports System.Web

Imports System.Web.UI

Imports System.Web.UI.WebControls

Namespace AspNet.VB.Controls

    <DefaultProperty("Text"), ToolboxData("<{0}:TextBoxReq runat=server></{0}:TextBoxReq>")> _

    Public Class TextBoxRequired

        Inherits CompositeControl

 

        Private ctrlTextBox As TextBox

        Private ctrlRequired As RequiredFieldValidator

        Private ctrlID As String

 

        <Category("Appearance"), DefaultValue("*"), Description("The Error Message")> _

        Public Property ErrorMessage() As String

            Get

                EnsureChildControls()

                Return ctrlRequired.ErrorMessage

            End Get

            Set(ByVal value As String)

                EnsureChildControls()

                ctrlRequired.ErrorMessage = value

            End Set

        End Property

 

        <Category("Appearance"), Bindable(True)> _

        Public Property Text() As String

            Get

                EnsureChildControls()

                Return ctrlTextBox.Text

            End Get

            Set(ByVal value As String)

                EnsureChildControls()

                ctrlTextBox.Text = value

            End Set

        End Property

 

        <Category("Default")> _

        Public Overrides Property ID() As String

            Get

                Return ctrlID

            End Get

            Set(ByVal value As String)

                ctrlID = value

            End Set

        End Property

 

        <Category("Default")> _

        Public Overrides Property Width() As System.Web.UI.WebControls.Unit

            Get

                Return ctrlTextBox.Width

            End Get

            Set(ByVal value As System.Web.UI.WebControls.Unit)

                ctrlTextBox.Width = value

            End Set

        End Property

 

        <Category("Default")> _

        Public Property TextMode() As TextBoxMode

            Get

                Return ctrlTextBox.TextMode

            End Get

            Set(ByVal value As TextBoxMode)

                ctrlTextBox.TextMode = value

            End Set

        End Property

 

        <Category("Default")> _

        Public Property Rows() As Integer

            Get

                Return ctrlTextBox.Rows

            End Get

            Set(ByVal value As Integer)

                ctrlTextBox.Rows = value

            End Set

        End Property

 

        Protected Overrides Sub CreateChildControls()

            Controls.Clear()

            ctrlTextBox = New TextBox

            ctrlTextBox.ID = ID

            ctrlTextBox.ValidationGroup = "dynControl"

            ctrlRequired = New RequiredFieldValidator

 

            ctrlRequired.ID = "Validator1"

            ctrlRequired.Font.Bold = True

            ctrlRequired.Font.Size = FontUnit.Large

            ctrlRequired.ControlToValidate = ctrlTextBox.ID

            ctrlRequired.Text = ""

            ctrlRequired.Display = ValidatorDisplay.Dynamic

            ctrlRequired.ValidationGroup = "dynControl"

 

            Me.Controls.Add(ctrlTextBox)

            Me.Controls.Add(ctrlRequired)

        End Sub

 

        Protected Overrides Sub RecreateChildControls()

            EnsureChildControls()

        End Sub

    End Class

End Namespace

 

 

Pra finalizar, um grande amigo meu, que sempre defendeu o PHP, motivo pelo qual temos discussões divertidíssimas quase diariamente, me disse uma vez que só iría falar bem do .NET o dia que pudesse programar PHP dentro do Visual Studio. Bem, esse dia chegou. Quem gosta muito do PHP e quer migrar pro .NET, ou já trabalhou com o PHP e quer usar esses conhecimentos criando sites em PHP.NET, dê uma olhada no link http://www.php-compiler.net

 

Me mandem e-mail: aguiar.fabio@gmail.com

 

Um grande abraço e muito sucesso



Total de visualizações: 5123
voltar   comente  subir


Comentários:

Comentado por: Everton - 13/11/2006 13:20:12
de que compositeControl que este componente está herdando?

Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Como criar um CompositeControl, TextBox com Validador
O que é Design Patterns?
Como criar facilmente arquivos XML via código
Alterando e criptografando a String de Conexão em RunTime (.NET 2.0)
Sobre o Autor
  [sumir] [aparecer]
 
Fabio Aguiar

Informaes Online
Usurios Online: 133
Artigos:  750
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC