Usuário com melhor resposta
Combobox com máscara de entrada

Pergunta
-
Bom dia pessoal!
Eu estou criando uma tela de cadastros e surgiu a necessidade de além de exibir os dados do banco para alguns campos, permitir a entrada de dados novos. Essa entrada de dados novos eu vou controlar para não ter conflito com os dados já existentes na tabela e permitir ou não a inserção no evento leave do componente.
Mas o problema está sendo a máscara de entrada, pois um dos campos é de telefone, por exemplo. Eu busco esses telefones na tabela de cadastros, que é gerenciada por uma tela onde uso o maskeditbox para fazer a entrada de dados. Mas na tela onde estou trabalhando hoje, eu uso o combobox para listar os telefones.
Eu estou tentando desenvolver uma máscara via código para simular o maskeditbox, mas não estou tendo sucesso. Alguém tem alguma sugestão?
att.
Giovani
Respostas
-
Encontrei uma solução!
Eu juntei 2 componentes sobrepostos.
1 maskeditbox
1 combobox
E configurei a mascara para telefone fixo. Criei 2 eventos de código para escolher entre a máscara de telefone fixo ou telefone celular e resolveu o problema! Agora falta eu criar isso como um componente para usar como dll, sendo assim, não precisarei fazer essa adaptação toda vez que eu precisar.
O componente visualmente ficou assim.
E o código para escolher as máscaras ficou assim:
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 'Escolhe a máscara ideal de acordo com o formato de telefone fixo ou de telefone de celular 'Pelo evento de selecionar item do combobox If Me.ComboBox1.Items(Me.ComboBox1.SelectedIndex).ToString.Length = 13 Then Me.MaskedTextBox1.Mask = "(99)9999-9999" Else Me.MaskedTextBox1.Mask = "(99)99999-9999" End If Me.MaskedTextBox1.Text = Me.ComboBox1.Items(Me.ComboBox1.SelectedIndex).ToString End Sub Private Sub MaskedTextBox1_TextChanged(sender As Object, e As EventArgs) Handles MaskedTextBox1.TextChanged 'Aqui escolhe a mascara de acordo com o caracter que define telefone celular. 'Devem existir situações em que isso não funcione...mas a toque de caixa resolve o problema! If Me.MaskedTextBox1.Text.Substring(4, 1) = "9" Then Me.MaskedTextBox1.Mask = "(99)99999-9999" Else Me.MaskedTextBox1.Mask = "(99)9999-9999" End If End Sub
Att.
Giovani
- Marcado como Resposta Giovani Rodrigues quarta-feira, 8 de abril de 2015 18:59
Todas as Respostas
-
Encontrei uma solução!
Eu juntei 2 componentes sobrepostos.
1 maskeditbox
1 combobox
E configurei a mascara para telefone fixo. Criei 2 eventos de código para escolher entre a máscara de telefone fixo ou telefone celular e resolveu o problema! Agora falta eu criar isso como um componente para usar como dll, sendo assim, não precisarei fazer essa adaptação toda vez que eu precisar.
O componente visualmente ficou assim.
E o código para escolher as máscaras ficou assim:
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged 'Escolhe a máscara ideal de acordo com o formato de telefone fixo ou de telefone de celular 'Pelo evento de selecionar item do combobox If Me.ComboBox1.Items(Me.ComboBox1.SelectedIndex).ToString.Length = 13 Then Me.MaskedTextBox1.Mask = "(99)9999-9999" Else Me.MaskedTextBox1.Mask = "(99)99999-9999" End If Me.MaskedTextBox1.Text = Me.ComboBox1.Items(Me.ComboBox1.SelectedIndex).ToString End Sub Private Sub MaskedTextBox1_TextChanged(sender As Object, e As EventArgs) Handles MaskedTextBox1.TextChanged 'Aqui escolhe a mascara de acordo com o caracter que define telefone celular. 'Devem existir situações em que isso não funcione...mas a toque de caixa resolve o problema! If Me.MaskedTextBox1.Text.Substring(4, 1) = "9" Then Me.MaskedTextBox1.Mask = "(99)99999-9999" Else Me.MaskedTextBox1.Mask = "(99)9999-9999" End If End Sub
Att.
Giovani
- Marcado como Resposta Giovani Rodrigues quarta-feira, 8 de abril de 2015 18:59
-