DIGITA?ÃO DE DATAS PARCIAIS AA OU MM/AA OU DD/MM/A

SBONATO 17/02/2017 13:58:20
#471763
Boa tarde pessoal,

Tenho que implementar uma digitação de data parcial, onde o usuário pode informar só ano (AA) ou mês/ano (MM/AA) ou dia/mês/ano (DD/MM/AA).
Tentei usar o maskedtextbox, mas não queria que ele tivesse que posicionar o cursor onde ele quer digitar.
Gostaria que ele começasse a digitar da direita para a esquerda e parasse quando tivesse digitado o que quer.
Tentei usar o [Ô]RightToLeft[Ô] mas não dá certo. Só funciona quando o campo é completado inteiramente.
Tentei usar só o textbox simples, mas gostaria que as barras fossem exibidas durante a digitação.
Alguém tem alguma dica?
Obrigada.
RICARDOCENTENO 26/02/2017 16:50:43
#471948
Olá boa tarde.

Achei interessante sua dúvida, mas queria lhe alertar de algo importante: Quando você insere o ano em apenas dois dígitos você irá dificultar até na hora de validar esta data em questão. O meu conselho é você usar o ano em quatro dígitos e também neste caso específico, utilize radiobuttons para sanar a questão da data.

Vou lhe passar um exemplo que montei aqui com um textbox (txtData) com o maxilength 10 onde é colocado automaticamente as barras enquanto você digita, segue o código:


   Private Sub formatarData()

[ô]Para formatar a data
If txtData.Text.Length = 2 Or txtData.Text.Length = 5 Then

[ô]Adiciono a barra
txtData.AppendText([Ô]/[Ô])

End If

End Sub

Private Sub txtData_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtData.KeyPress

[ô]Liberar o backspace para pagar o texto e sair do sub
If e.KeyChar = Convert.ToChar(Keys.Back) Then Exit Sub

[ô]Formata o campo para aceitar apenas números
If e.KeyChar < Convert.ToChar(Asc([Ô]0[Ô])) Or e.KeyChar > Convert.ToChar(Asc([Ô]9[Ô])) Then

[ô]Bloqueia qualquer outra tecla que não seja números
e.Handled = True

Exit Sub

End If

formatarData()

End Sub


Espero ter ajudado.
RICARDOCENTENO 28/02/2017 12:35:52
#471993
Caso tenha resolvido o problema, finalize o tópico para uma melhor organização do fórum.
Faça seu login para responder