none
SE O MASKEDTEXTBOX ESTIVER VAZIO ENTÃO... RRS feed

  • Pergunta

  • Pessoal estou com problema aqui, muito simples, imaginava que o código ia funcionar, mas não estou entendendo porque não funciona com o mskTelefone:

     

     

    If txtNome.Text = "" Then
       MsgBox("O Campo Nome é obrigatório", vbCritical, "Atenção")
       txtNome.Focus()
      ElseIf mskTelefone.Text = "" Then
       MsgBox("O Campo Telefone é obrigatório", vbCritical, "Atenção")
       mskTelefone.Focus()
      Else
    

     


    o problema é que o mskTelefone que está com a máscara: (##) ####-#### na propriedade Mask, quando vazio (sem telefone digitado) não está dando focus no mesmo, passando direto para o Else. No txtNome, quando vazio, o focus acontece certinho.

    Onde estou errando nesse problema básico???

     

    Muito obrigado.


    sexta-feira, 17 de junho de 2011 04:33

Respostas

  • Pessoal no código coloquei, onde "(  )   -  " seria o mskTelefone vazio. Vou deixar assim mesmo. Dessa forma funcionou, poré não entendi pq ele considera a máscara como texto. 

     

    Mesmo assim obrigado a todos.

     

    ElseIf Me.mskTelefone.Text = "( ) - " Then

    Resolveu o meu problema. Muito Obrigado. Fica aí a dica pra quem quiser usar.

    sábado, 18 de junho de 2011 22:38

Todas as Respostas

  • Amigo, tente fazer como no exemplo a seguir, utilizando o LINQ e a classe CHAR, você conta somente se o seu campo contem valores númericos e letras

    if (maskedTextBox1.Text.Count(c => char.IsLetterOrDigit(c)) == 0)
          {
            //vazio
          }
          else
          {
            //não vazio
          }
    



    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    sexta-feira, 17 de junho de 2011 11:36
    Moderador
  • Estou usando VB.NET...
    sexta-feira, 17 de junho de 2011 12:11
  • Estou usando VB.NET...

    Eu traduzi o que o Olavo escreveu

    Private Sub vazio()
    			'vazio
    	If maskedTextBox1.Text.Count(Function(c) Char.IsLetterOrDigit(c)) = 0 Then
    			'não vazio
    	Else
    	End If
    End Sub


    One word frees us of all the weight and pain of life: that word is love.
    sexta-feira, 17 de junho de 2011 13:40
  • Faz assim:

     

            ElseIf Me.MaskedTextBox1.MaskCompleted = false Then
                /messagem de erro

    end if



    One word frees us of all the weight and pain of life: that word is love.
    sexta-feira, 17 de junho de 2011 13:47
  • Pessoal, testei aqui, mas não deu certo :

     

      If txtNome.Text = "" Then
          MsgBox("O Campo Nome é obrigatório", vbCritical, "Atenção")
          txtNome.Focus()
        ElseIf Me.mskTelefone.MaskCompleted = False Then
          MsgBox("O Campo Telefone é obrigatório", vbCritical, "Atenção")
          mskTelefone.Focus()
        Else
    
    Continua passando direto para o Else...

    Teriam uma outra opção???

    Desde já muito obrigado.

    sexta-feira, 17 de junho de 2011 15:09
  • Faz assim:

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            If Me.TextBox1.Text.Length = 0 Then

                MessageBox.Show("nao pode ficar vazio")

     

            Else

     

                If Me.MaskedTextBox1.Text.Length = 0 Then

                    MessageBox.Show("Encher")

                    MaskedTextBox1.Focus()

     

                End If

            End If

     

        End Sub


    One word frees us of all the weight and pain of life: that word is love.
    sexta-feira, 17 de junho de 2011 18:06
  • Malange,

    Não funcionou cara. Parece brincadeira, mas não funcionou...poderia testar aí pra tirar a dúvida. Eu acredito então que o erro possa estar em outra parte do código. Segue:

     

     Private Sub cmdGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGravar.Click
      If txtNome.Text = "" Then
       MsgBox("O Campo Nome é obrigatório", vbCritical, "Atenção")
       txtNome.Focus()
      ElseIf Me.mskTelefone.Text.Length = 0 Then
       MsgBox("O Campo Telefone é obrigatório", vbCritical, "Atenção")
       mskTelefone.Focus()
      Else
    
       mycommand = New MySql.Data.MySqlClient.MySqlCommand("INSERT INTO nomes (ag_nome, ag_telefone ) values ('" & txtNome.Text & "','" & mskTelefone.Text & "')", myconn)
    
       Try
        myconn.Open()
        mycommand.ExecuteNonQuery()
        MsgBox("Dados de : " & txtNome.Text & " Gravados com Sucesso!!", vbOKOnly, "Gravado")
        'Limpa os dados após gravar
        txtCodigo.Text = ""
        txtNome.Text = ""
        txtTelefone.Text = ""
    
       Catch ex As Exception
        MsgBox(ex.Message)
       Finally
        myconn.Dispose()
        myconn.Close()
    
       End Try
    
      End If
    
     End Sub
    


     

    Obrigado pela força.

     

    Temos mais alguma opção?


    sábado, 18 de junho de 2011 01:00
  • Aqui funciona perfeitamente. Eu testei o codigo. Ele recebe o focus normalmente.

    Faz o seguinte. Adiciona um novo MaskTextbox. E testa o codigo qk eu passei. Telvez voce alterou propiedades Sem queres.

     


    One word frees us of all the weight and pain of life: that word is love.
    sábado, 18 de junho de 2011 13:05
  • Malange eu fiz o teste aqui, não deu certo não. Excluir o mskTelefone do meu form, incluir um novo, pelo toolbox e quando executo o código ele passa direto pro Else.

    Mas, observei que se o mskTelefone estiver sem a máscara ele funciona, porém com a máscara, (##) - #### - ####, não funciona, não seria esse o problema??? O VB não estaria entendendo a Máscara como um preenchimento normal???

     

    Obrigado


    sábado, 18 de junho de 2011 22:32
  • Pessoal no código coloquei, onde "(  )   -  " seria o mskTelefone vazio. Vou deixar assim mesmo. Dessa forma funcionou, poré não entendi pq ele considera a máscara como texto. 

     

    Mesmo assim obrigado a todos.

     

    ElseIf Me.mskTelefone.Text = "( ) - " Then

    Resolveu o meu problema. Muito Obrigado. Fica aí a dica pra quem quiser usar.

    sábado, 18 de junho de 2011 22:38