Jump to content
Super Oliks

Richtextbox aceitar apenas letras

Recommended Posts

Super Oliks

O tópico ja descreve o que estou a tentar a fazer.

Andei olhando pela net para encontrar uma solução, "mais não encontrei (talvez até encontrei mas não sei como bota-la para funcionar)".

Assim é a original...

 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Then 'não aceitar números entre 48 e 57
            e.Handled = True
            e = Nothing
        End If
    End Sub

Assim ficou, depois que tentei modifica-la;

  Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress

        If (RichTextBox1.Text = Asc(e.KeyChar) <= 0 And RichTextBox1.Text = Asc(e.KeyChar) >= 0) Then 'não receber números menores que 0 nem maiores
            e.Handled = True
            e = Nothing
        End If

    End Sub

Só que ao correr o programa está a dar erro na primeira linha "IF (RichText........."

Dicas?

Share this post


Link to post
Share on other sites
ribeiro55

O bloco original não excluí números do 48 ao 57, como apontaste no comentário.

Excluí sim, caracteres com o código ASCII compreendido entre o 48 e o 57

ASCII 48 = 0

ASCII 49 = 1

ASCII 50 = 2

ASCII 51 = 3

ASCII 52 = 4

ASCII 53 = 5

ASCII 54 = 6

ASCII 55 = 7

ASCII 56 = 8

ASCII 57 = 9

E deveria funcionar correctamente.

A tua tentativa começou logo mal no momento em que estás a comparar o texto actual da richbox com o keychar.

Dentro do evento keypress, a propriedade KeyChar dos argumentos de evento e representa a tecla pressionada, tendo tu apenas que testar o seu valor individualmente.

Resumindo: O primeiro bloco de código parece correcto.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Super Oliks

Sim estás a funcionar, mas tem um porem (que esqueci de mencionar).

O richtextbox está "ligada" ao textbox:

RichTextBox1.Text = TextBox1.Text

E quando digito letras e números no textbox aparece as letras e números no richtextbox tambem, no qual devia aparecer apenas as letras, pois penso eu que o código daria certo.

Share this post


Link to post
Share on other sites
ribeiro55

Não, não estão "ligadas".

Só estás a dar texto de uma para a outra.

Terás de fazer exactamente o mesmo controlo de teclas na richtext.

Como os eventos são similares, basta acrescentares o evento da richtext com esse sub como handler, assim:

 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _ 
Handles TextBox1.KeyPress,RichTextBox1.KeyPress

        If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Then
            e.Handled = True
            e = Nothing
        End If
    End Sub


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Super Oliks

Mas isso fará com que o textbox tambem não aceites "numeros".

E no entanto, apenas o Richtextbox1 não deveras aceitar os numeros, ou seja, ao digitar na textbox aparecerá os numeros, e na richtexbox não, isso ao mesmo tempo que a richtextbox está recebendo o texto da textbox.

Pensei em algo assim:

'seguindo seu exemplo
    Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal excluir As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress

        If (Asc(excluir.KeyChar) >= 48 And Asc(excluir.KeyChar) <= 57) Then
            excluir.Handled = True
            excluir = Nothing
End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal incluir As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        If (Asc(incluir.KeyChar) >= 48 And Asc(incluir.KeyChar) <= 57) Then
            incluir.Handled = False
            incluir.KeyChar = Yes
        End If
    End Sub

Só que não esta a funcionar, pois a linha "incluir.Keychar" não aceita a condição "yes".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.