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
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")> _
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")> _
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!
Subscrever:
Enviar feedback (Atom)
1 comentários:
Podia explicar como criar eventos para os comoponentes. ;)
Enviar um comentário