Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VB.NET: Criação de Controlos Personalizados

A criação de controlos personalizados poderá reduzir significativamente o código das aplicações. É um processo simples de se conseguir e no entanto bastante útil porque apenas se executa o mesmo código uma vez. Se tivéssemos de repetir o mesmo código em todos os controlos de todos os Forms seria um processo demorado, com bastante código repetido e com uma probabilidade de erro bastante grande.

O exemplo que vou apresentar mostra como criar duas novas propriedades numa TextBox, GotFocusColor e LostFocusColor, que servirá para colocar uma cor de fundo sempre que o controlo ganha uma selecção.

É claro que este é apenas um exemplo simples, mas poderíamos fazer mais algumas validações, novas propriedades, etc. Por exemplo, poderíamos validar se o texto inserido é do tipo data e limpar o texto caso não fosse.

Mas vamos ao exemplo:

1 – Adicionar uma nova classe e colocar o código abaixo indicado
2 – Compilar a aplicação (build)
3 – Da Toolbar, secção Components, arrastar o nosso CustomTextBox para o Form


Imports System.Drawing
Imports System.ComponentModel

Public Class CustomTextBox

  ' Indica que a classe deriva de uma Windows.Forms.TextBox
  ' ou seja vai herdar os seus atributos, propriedades, events, etc
  Inherits Windows.Forms.TextBox

  ' Coloca a cor inicial do objecto. No exemplo não será visível
  ' pois a cor já é branca mas se quisermos usar outra cor por
  ' pré-definição, ela será atribuida quando este for criado
  Sub New()
      Me.BackColor = myLostFocusColor
  End Sub

  ' Definição das novas propriedades do objecto
  Private myFocusColor As Color = Color.LightGreen
  Private myLostFocusColor As Color = Color.White

  ' A Category e Description serve para definir a categoria
  ' e descrição que aparece nas propriedades (no form design)
  <Category("_Custom")> _
  <Description("Definição da cor de fundo quando o objecto está seleccionado")> _
  Public Property FocusColor() As Color 
      Get
          Return
myFocusColor
      End Get
      Set
(ByVal value As Color)
          myFocusColor = value
      End Set
  End Property


  <Category("_Custom")> _
  <Description("Definição da cor de fundo quando o objecto não está seleccionado")> _
  Public Property LostFocusColor() As Color
      Get
          Return
myLostFocusColor 
      End Get
      Set
(ByVal value As Color)
          myLostFocusColor = value
      End Set
  End Property


  ' Atribui a cor quando o objecto tiver a selecção(focus)
  Private Sub CustomTextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
      Me.BackColor = myFocusColor
  End Sub

  ' Atribui a cor quando o objecto não tiver a selecção(focus)
  Private Sub CustomTextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Leave
      Me.BackColor = myLostFocusColor
  End Sub

End Class



PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!

1 comentários:

Scorch disse...

Podia explicar como criar eventos para os comoponentes. ;)

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico