Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
752
Assunto : VB.NET
Titulo: Melhorando a validação em formulários windows

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



O sistema de validação existente no ambiente Windows Forms possui pequenos problemas chatinhos, mas que podem ser contornados.

A validação de dados é feita em um evento chamado validating, existente em diversos objetos, como em caixas de texto. Programamos este evento para cada campo de um formulário windows. Quando uma informação estiver inválida podemos fazer com que o foco fique preso na caixa.

O problema é que no .NET o validating ocorre dentro do processo de perda de foco de uma caixa. Isso quer dizer que se o usuário abrir uma tela de gravação de dados e clicar diretamente no botão gravar, sem dar foco a caixa alguma, as validações não serão executadas. Apenas serão executadas as validações das caixas que ganharam o foco.

Porém podemos resolver isso com uma codificação simples. Veja :

'Essa variável serve de flag, se deu erro ou não
Dim temErro As Boolean = False


Private Sub TextBox2_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox2.Validating
If Not IsNumeric(TextBox2.Text) Then
ER.SetError(TextBox2, "A caixa precisa conter números")
temErro = True
e.Cancel = True
Else
temErro = False
ER.SetError(TextBox2, "")
End If
End Sub

O evento validating usa um errorProvider e define o valor do flag

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ValidarTudo(Button1)
If Not temErro Then
MsgBox("Ok")
End If
End Sub

O botão chama uma função de validação e testa o flag para fazer sua tarefa.

Eis então a função de validação :

Sub ValidarTudo(ByVal controlefoco As Control)
Dim c As Control
For Each c In Me.Controls
c.Focus()
controlefoco.Focus()
Next
End Sub

A função recebe o botão como parâmetro. Faz um laço nos controles do form dando o foco ao controle e depois novamente ao botão. Dar o foco ao botão (ou qualquer outro objeto) é necessário já que o validating faz parte da sequencia de perda de foco, ou seja, o foco tem que ser retirado das caixas para que ele ocorra.

Desta forma mesmo que o usuário clique no botão de ok sem ter entrado nas caixas, o botão Ok provocará o validating das caixas para verificar se está tudo correto.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 1/31/2017 11:01:00 AM
nome: wiHJcmbxMUzXaAKtUwW
email: derby451@hotmail.com
comentário:
h6CoiX http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:18:00 AM
nome: RQuTiCUrnr
email: jogcbfn@hotmail.com
comentário:
zns5fH http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/29/2017 8:12:00 AM
nome: QtdvLeQCCzSLlKcruX
email: derby451@hotmail.com
comentário:
Lv1RaI http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

data: 1/5/2017 9:11:00 PM
nome: jctEdBGTViGV
email: jfvynms4281rt@hotmail.com
comentário:
B02Jsb http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br