MESMO LOSTFOCUS PARA V?RIOS CAMPOS
Olá pessoal
Tenho uma tela coma vários maskedtext que são datas [Ô]__/__/____[Ô] (mskDate1, mskDate2, mskDate3...)
Criei a rotina :
Private Sub MyDates_LostFocus(sender As Object, e As EventArgs) Handles mskDate1.LostFocus, mskDate2.LostFocus, mskDate3.LostFocus
Se eu preencho a Date1 onde pego o valor desta data, o mesmo seria para Date2 e Date3? seria o sender? O sender até recebe a data mas não trata como date.
Para cada Data será uma situação diferente a ser tratada no LostFocus
End Sub
Até poderia fazer um LostFocus para cada data, mas não seria interessante numa futura manutenção..
A rotina acima funciona mas não estou sabendo pegar as respectivas datas [txt-color=#0000f0]preenchidas ou não preenchidas[/txt-color]
Grato
Tenho uma tela coma vários maskedtext que são datas [Ô]__/__/____[Ô] (mskDate1, mskDate2, mskDate3...)
Criei a rotina :
Private Sub MyDates_LostFocus(sender As Object, e As EventArgs) Handles mskDate1.LostFocus, mskDate2.LostFocus, mskDate3.LostFocus
Se eu preencho a Date1 onde pego o valor desta data, o mesmo seria para Date2 e Date3? seria o sender? O sender até recebe a data mas não trata como date.
Para cada Data será uma situação diferente a ser tratada no LostFocus
End Sub
Até poderia fazer um LostFocus para cada data, mas não seria interessante numa futura manutenção..
A rotina acima funciona mas não estou sabendo pegar as respectivas datas [txt-color=#0000f0]preenchidas ou não preenchidas[/txt-color]
Grato
Para cada evento disparado nos respectivos controles, o [Ô]sender[Ô] capturará o controle que o disparou. é só utiliza-lo como se fosse o próprio controle. Ex:
Msgbox(sender.Text)
ou
Msgbox(CDate(sender.Text))
Sender é o objeto que disparou o evento. Você pode verificar isso na propriedade [Ô]sender.Name[Ô]. Também pode fazer o cast do sender diretamente no tipo dele e usar qualquer propriedade.
[ô]convertendo diretamente
DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text
[ô]usando uma instância de objeto e cast
Dim chamante As System.Windows.Forms.MaskedTextBox = DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text
chamante.Text = DateTime.Now;
Obs: Minha edição foi só para colocar o exemplo, nem tinha visto a postagem do Kerplunk. Fiquei com a janela aberta no mesmo lugar, sem carregar a página, e, alguns minutinhos depois, alterei o que havia postado.
Ficou assim
Private Sub MaskedTextBox_LostFocus(sender As Object, e As EventArgs) Handles _
MaskedTextBox1.LostFocus,
MaskedTextBox2.LostFocus,
MaskedTextBox3.LostFocus
If Not IsDate(DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text) And DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text <> [Ô] / /[Ô] Then
MsgBox([Ô]Data Incorreta[Ô])
For Each controle As Control In Me.Controls
If TypeOf controle Is MaskedTextBox Then
If controle.Name = DirectCast(sender, System.Windows.Forms.MaskedTextBox).Name Then
controle.Text = [Ô][Ô]
controle.Focus()
End If
End If
Next
End If
End Sub
Private Sub MaskedTextBox_LostFocus(sender As Object, e As EventArgs) Handles _
MaskedTextBox1.LostFocus,
MaskedTextBox2.LostFocus,
MaskedTextBox3.LostFocus
If Not IsDate(DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text) And DirectCast(sender, System.Windows.Forms.MaskedTextBox).Text <> [Ô] / /[Ô] Then
MsgBox([Ô]Data Incorreta[Ô])
For Each controle As Control In Me.Controls
If TypeOf controle Is MaskedTextBox Then
If controle.Name = DirectCast(sender, System.Windows.Forms.MaskedTextBox).Name Then
controle.Text = [Ô][Ô]
controle.Focus()
End If
End If
Next
End If
End Sub
Se sua intenção é limpar o controle que perdeu o foco, é só fazer direto.
Private Sub MaskedTextBox_LostFocus(sender As Object, e As EventArgs) Handles MaskedTextBox1.LostFocus, MaskedTextBox2.LostFocus, MaskedTextBox3.LostFocus
Dim msk as MaskedTextBox = DirectCast(sender, System.Windows.Forms.MaskedTextBox)
If (Not IsDate(msk.Text) AndAlso msk.Text <> [Ô] / /[Ô]) Then
MsgBox([Ô]Data Incorreta[Ô])
else
msk.Text = [Ô][Ô]
msk.Focus()
End if
End Sub
Valeu Jaba,
só que o [Ô]else[Ô] está sobrando, tem que tira-lo para funcionar
Uma das coisas realmente e ver se a datá é válida, tem mais, não não fazem parte da dúvida.
Grato
só que o [Ô]else[Ô] está sobrando, tem que tira-lo para funcionar
Uma das coisas realmente e ver se a datá é válida, tem mais, não não fazem parte da dúvida.
Grato
Tópico encerrado , respostas não são mais permitidas