none
Bloquear caracteres especiais ( Acentos, @,$ .....)no TextBox. RRS feed

  • Pergunta

  • Olá pessoal.

    Todos os meus caracteres especiais estão em uma listbox.

    Como posso comparar o TextBox, para verificar se há algum item do listbox nele ?

    quarta-feira, 14 de novembro de 2012 17:20

Respostas

  • Isso pode ser feito usando o Evento KeyPress. Aqui esta um exemplo de como permitir somente letras (maiusculas e minusculas) + espaço.

    A idéia  é verificar se a tecla pressionada (e.KeyChar) é igual a um caractere valido (ou se esta numa faixa de caracteres) e fazer e.Handled=True caso esteja.


    Private Sub textDate_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textDate.KeyPress
            If (Microsoft.VisualBasic.Asc(e.KeyChar) < 65) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 90) _
                 And (Microsoft.VisualBasic.Asc(e.KeyChar) < 97) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122) Then
                'space accepted
                If (Microsoft.VisualBasic.Asc(e.KeyChar) <> 32) Then
                    e.Handled = True
                End If
            End If
            If (Microsoft.VisualBasic.Asc(e.KeyChar) = 8) Then
                
                e.Handled = False
            End If
        End Sub

    fonte:http://www.daniweb.com/software-development/vbnet/threads/114278/textbox-key-press-event


    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    quarta-feira, 14 de novembro de 2012 18:12
    Moderador

Todas as Respostas

  • Isso pode ser feito usando o Evento KeyPress. Aqui esta um exemplo de como permitir somente letras (maiusculas e minusculas) + espaço.

    A idéia  é verificar se a tecla pressionada (e.KeyChar) é igual a um caractere valido (ou se esta numa faixa de caracteres) e fazer e.Handled=True caso esteja.


    Private Sub textDate_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textDate.KeyPress
            If (Microsoft.VisualBasic.Asc(e.KeyChar) < 65) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 90) _
                 And (Microsoft.VisualBasic.Asc(e.KeyChar) < 97) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122) Then
                'space accepted
                If (Microsoft.VisualBasic.Asc(e.KeyChar) <> 32) Then
                    e.Handled = True
                End If
            End If
            If (Microsoft.VisualBasic.Asc(e.KeyChar) = 8) Then
                
                e.Handled = False
            End If
        End Sub

    fonte:http://www.daniweb.com/software-development/vbnet/threads/114278/textbox-key-press-event


    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    quarta-feira, 14 de novembro de 2012 18:12
    Moderador
  • Isso pode ser feito usando o Evento KeyPress. Aqui esta um exemplo de como permitir somente letras (maiusculas e minusculas) + espaço.

    A idéia  é verificar se a tecla pressionada (e.KeyChar) é igual a um caractere valido (ou se esta numa faixa de caracteres) e fazer e.Handled=True caso esteja.


    Private Sub textDate_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textDate.KeyPress
            If (Microsoft.VisualBasic.Asc(e.KeyChar) < 65) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 90) _
                 And (Microsoft.VisualBasic.Asc(e.KeyChar) < 97) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122) Then
                'space accepted
                If (Microsoft.VisualBasic.Asc(e.KeyChar) <> 32) Then
                    e.Handled = True
                End If
            End If
            If (Microsoft.VisualBasic.Asc(e.KeyChar) = 8) Then
                
                e.Handled = False
            End If
        End Sub

    fonte:http://www.daniweb.com/software-development/vbnet/threads/114278/textbox-key-press-event


    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

     Acredito que isso funcionará, mais Eduardo, lembre que isso apenas bloqueia a tecla pressionada, se você não quer permitir que esses tipos de carácteres sejam inseridos você terá que fazer essa validação no método TextChanged, pois se você apenas validar a tecla pressionada o usuário poderá copiar e colar um caractere inválido e ele será inserido normalmente no TextBox.
    quarta-feira, 14 de novembro de 2012 18:29
  • Isso pode ser feito usando o Evento KeyPress. Aqui esta um exemplo de como permitir somente letras (maiusculas e minusculas) + espaço.

    A idéia  é verificar se a tecla pressionada (e.KeyChar) é igual a um caractere valido (ou se esta numa faixa de caracteres) e fazer e.Handled=True caso esteja.


    Private Sub textDate_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textDate.KeyPress
            If (Microsoft.VisualBasic.Asc(e.KeyChar) < 65) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 90) _
                 And (Microsoft.VisualBasic.Asc(e.KeyChar) < 97) _
                 Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122) Then
                'space accepted
                If (Microsoft.VisualBasic.Asc(e.KeyChar) <> 32) Then
                    e.Handled = True
                End If
            End If
            If (Microsoft.VisualBasic.Asc(e.KeyChar) = 8) Then
                
                e.Handled = False
            End If
        End Sub

    fonte:http://www.daniweb.com/software-development/vbnet/threads/114278/textbox-key-press-event


    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    hum... muito bom esse codigo, mas é um campo de formulario,login, que tem q ter letras e numeros.. ou so letras.... Sera que nao da pra comparar o textbox com a coleção de um ListBox ?
    quarta-feira, 14 de novembro de 2012 22:11
  • Sim.. é so fazer :

    If (listacaracters.Contains(  Microsoft.VisualBasic.Asc(e.KeyChar) )  then 
     e.Handled = False
    
    end if


    Ou seja, se o caractere esta na lista de caracteres invalidos, bloqueie. A lista pode ser o items da sua listbox.

    Mas eu ainda prefiro fazer por faixa de caracteres permitidos como o exemplo acima. Para permitir numeros basta mudar a faixa

      If (Microsoft.VisualBasic.Asc(e.KeyChar) < 65) Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 90) _
      And (Microsoft.VisualBasic.Asc(e.KeyChar) < 97) Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122)_
      And (Microsoft.VisualBasic.Asc(e.KeyChar) < 47) Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 59)_
    Then

    os numeros vao de 48 a 57 (codigo ascii)

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    quinta-feira, 15 de novembro de 2012 13:40
    Moderador