Jump to content
Tuba

Problema em permitir apenas números e excluir letras

Recommended Posts

Tuba

Estou a fazer um pequeno programa para preencher uma matriz 4 por 4, através de uma InputBox. O programa permite inserir apenas números. O meu problema está aí, consegui excluir as letras, mas ao introduzir uma letra aparece sempre na tabela o número zero. Para contornar isso inseri o Do...Loop...mas não sei como dizer "fazer loop até ser apenas número" na linha seguinte:

Loop Until Grelha(i, j).Value = ????

Este é o código que tenho até agora:

Public Class Form2
Dim matriz(3, 3) As Integer

Private Sub DataGridView1_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Grelha.CellContentClick

End Sub

Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Grelha.Rows.Add(3)
End Sub

Private Sub btnpreencher_Click(sender As System.Object, e As System.EventArgs) Handles btnpreencher.Click
Dim keyAscii As Integer

For i = 0 To 3
For j = 0 To 3
matriz(3, 3) = Val(InputBox("Qual o número da coluna " & i & " da " & "linha " & "" & j & "?"))
Grelha(i, j).Value = matriz(3, 3) & vbNewLine
Do
If Grelha(i, j).Value = keyAscii Then
MessageBox.Show("Insira apenas números!")
matriz(3, 3) = Val(InputBox("Qual o número da coluna " & i & " da " & "linha " & "" & j & "?"))
End If
Loop Until Grelha(i, j).Value =
Next
Next

End Sub


End Class

Agradecia muito a ajuda.

Edited by Caça
GeSHi

Share this post


Link to post
Share on other sites
veaoum

Esta solução é atravez de textbox:

Public Function camponumero(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) As Integer
    e.Handled = True 'Isto cancela a tecla que carreguei
    If IsNumeric(e.KeyChar) Or e.KeyChar = Chr(8) Then _
	   e.Handled = False 'Isto faz com que a tecla seja lida para colocar no campo.
    Return 1
   End Function
Private Sub txtnsaude_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnsaude.KeyPress
    camponumero(sender, e)
   End Sub

Share this post


Link to post
Share on other sites
ribeiro55

O que pretendes com a variável "keyAscii" ?

Estás basicamente a testar se o valor inserido é igual a zero...

Tens outros problemas antes desse, nomeadamente o facto de estares a iterar as posições da matriz mas a atribuír efectivamente apenas uma posição, a última (3,3).

Estás a misturar newLines ali por o meio também para quê?

Tens aí muitas confusões.

Vou-te deixar um exemplo rápido que faz o que pretendes:

        Dim Matriz(3, 3) As Integer
       Dim PosX As Integer = 0
       Dim PosY As Integer = 0
       Dim Valor As String = String.Empty

       While Not IsNumeric(Valor)
           Valor = InputBox(String.Format("Insira um número para a posição x={0} e y={1}", PosX + 1, PosY + 1), "Inserir número")
           If Not IsNumeric(Valor) Then
               MessageBox.Show("Tem de ser um número!", "Apenas números", MessageBoxButtons.OK, MessageBoxIcon.Error)
               Continue While
           End If
           Matriz(PosX, PosY) = Integer.Parse(Valor)
           Valor = String.Empty
           PosX += 1
           If PosX = 4 Then PosY += 1 : PosX = 0
           If PosY > 3 Then Exit While
       End While

Fica ao teu critério se queres fazer Copy/Paste e ficar a perceber o mesmo, ou tirar dúvidas ;)

Edited by ribeiro55

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.