Desenvolvimento - Visual Basic .NET
Winforms - Expandindo controles
Neste artigo estarei mostrando como expandir um controle TextBox criando algumas funcionalidades e propriedades novas.
por Alexandre TarifaNeste artigo estarei mostrando como expandir um controle TextBox criando algumas funcionalidades e propriedades novas.
Criando a aplicação
Crie um novo projeto no Visual Studio (File> New> Project), selecione o project type Visual Basic Project, o template Windows Application, nome Controles e clique em OK.
Após a criação da aplicação, vamos adicionar o novo controle. No Solution Explorer , clique com o botão direito do mouse sobre o projeto Controles, Add, Add New Item. Selecione o template Custom Control e o nome NovoTextBox.
Uma janela de design é aberta, porém nada é exibido. Não temos acesso ao design do TextBox, portanto somente o código é alterado. Para ver o código precione F7.
Nossa primeira implementação no controle será adicionar uma propriedade para definir se o TextBox receberá somente valores numéricos.
O primeiro passo é alterar no topo do código a herança que é feita no início do código, devemos alterar Inherits System.Windows.Forms.Control para Inherits System.Windows.Forms.TextBox. Esta alteração é feita porque vamos ampliar as funcionalidades de um controle específico. No caso, um TextBox.
Para criar uma nova propriedade do controle é simples, temos que declarar uma propriedade chamada Numérico do tipo boleano, conforme abaixo:
Private _Numerico As Boolean Public Property Numerico() As Boolean Get Return _Numerico End Get Set(ByVal Value As Boolean) _Numerico = Value End Set End Property
O próximo passo é sobrescrever a sub OnKeyPress, conforme abaixo:
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs) If _Numerico = True Then If e.KeyChar>= "0" And e.KeyChar O evento OnKeyPress (quando é digitado algo no TextBox) quando tiver a propriedade Numérico como True, somente caracteres numéricos são aceitos.Para testar a aplicação, devemos compilar a aplicação (Ctrl+Shift+B). Abra o Form1, abra a janela ToolBox (Ctrl + Alt + X), clique com o botão direito do mouse, Add/Remove Items, Browse, selecione o arquivo Controles.exe na pasta Bin do seu projeto, selecione o NovoTextBox e clique em OK.
Foi adicionado na ToolBox o novo controle, arraste o novo controle para o formulário. Selecione as propriedades do controle (F4), vá na propriedade Numérico e selecione True. Adicione outro NovoTextBox e não altera nenhuma propriedade. Execute a aplicação (F5). Teste com letras o primeiro TextBox e note que nenhum caractere é digitado, digite números, e somente números são adicionados.
Vamos alterar nosso controle, delete toda a implementação do Evento OnKeyPress e a propriedade numérico.
Vamos criar um Enumerador com todas as possibilidades de formatação:
Public Enum TipoFormatacao Nenhum ForCep ForData forTelefone forHora End EnumTambém crie uma nova propriedade que receberá o valor do Enumerador:
Private Formatacao As TipoFormatacao Public Property Formatacao() As TipoFormatacao Get Return _Formatacao End Get Set(ByVal Value As TipoFormatacao) _Formatacao = Value End Set End PropertyVamos novamente redefinir OnKeyPress:
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs) Select Case _Formatacao Case OpcaoFormata.ForCep If Len(Me.Text) = 5 Then Me.Text = Me.Text & "-" Me.SelectionStart = Len(Me.Text) + 1 Me.MaxLength = 9 End If Case OpcaoFormata.ForData If Len(Me.Text) = 2 Or Len(Me.Text) = 5 Then Me.Text = Me.Text & "/" Me.SelectionStart = Len(Me.Text) + 1 Me.MaxLength = 10 End If Case OpcaoFormata.forHora If Len(Me.Text) = 2 Then Me.Text = Me.Text & ":" Me.SelectionStart = Len(Me.Text) + 1 Me.MaxLength = 5 End If Case OpcaoFormata.forTelefone If Len(Me.Text) = 0 Then Me.Text = Me.Text & "(" Me.SelectionStart = Len(Me.Text) + 1 ElseIf Len(Me.Text) = 3 Then Me.Text = Me.Text & ")" Me.SelectionStart = Len(Me.Text) + 1 ElseIf Len(Me.Text) = 8 Then Me.Text = Me.Text & "-" Me.SelectionStart = Len(Me.Text) + 1 End If Me.MaxLength = 13 End Select End SubAgora nosso controle possui uma propriedade chamada TipoFormatacao onde através de uma combo selecionaremos a opção:
Selecione as opções diretamente no TextBox e execute o projeto. Digite os valores e veja que a formatação selecionada é efetuada.
Além dessas implementações podemos criar várias, vai da necessidade que temos. Lembrando também que qualquer controle pode ter as suas propriedades expandidas.
Se você tem interesse em aprender .net ou discutir .net entre no grupo de usuários Codificando.net - São Paulo.
Se tiver alguma dúvida, crítica, sugestão de artigo, fale comigo: atarifa@deloitte.com.
Abraços.
Alexandre Tarifa
Líder Codificando.net SP
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET