Jump to content
williamjda

Como preencher o restante de caracteres com zero em um textBox?

Recommended Posts

williamjda

Olá amigo; venho humildimente perdir-lhes ajuda novamente:

Tenho uma textBox com 5 dígitos, onde é digitado um código de um produto. Gostaria de saber como faço para que quando o Usuário digitar um código menor do que 5 dígitos os os restante dos campos sejam preenchido com zero.

EXEMPLO:

o Código começa de 1 até 99999.

se o usurário digitar o código : 154

os campos antecedente a ele tem que ficar assim: 00154

Sem mais desde já agradeço;

Att

William

Share this post


Link to post
Share on other sites
Andrepereira9

boas

Ve se isto serve

Dim texto As String = TextBox1.Text.ToString
Dim textofinal As String

        If TextBox1.Text.Length < 5 Then
            Dim tamanho As Integer = 5 - TextBox1.Text.Length

            For i As Integer = 1 To tamanho
                textofinal &= "0"
            Next
            textofinal &= texto.ToString
            TextBox1.Text = textofinal.ToString
        End If


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
ribeiro55

Não precisas de empregar lógica de loop para colocar caracteres antes ou depois de determinada cadeia.

O que pretendes fazer é um "Pad", e a .NET já conta com métodos para o efeito.

Basta que no final dês:

TextBox1.Text = TextBox1.Text.PadLeft(5,"0")

Onde o argumento 5 dita o comprimento final da String e o argumento "0" determina qual o caractere que deve ser usado para o preenchimento.


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
williamjda

Amigo desculpe coloquei a questão errada.

Ao colocar o código no TextBox ele da a seguinte mensagem:

Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged

        Dim texto As String = TextBox6.Text.ToString

        Dim textofinal As String

        If TextBox6.Text.Length < 5 Then

            Dim tamanho As Integer = 5 - TextBox6.Text.Length

            For t As Integer = 1 To tamanho

                textofinal &= "0"                                <<< esta linha esta o erro >>>>>

            Next

            textofinal &= texto.ToString

            TextBox6.Text = textofinal.ToString

        End If

    End Sub

Warning 1 Variable 'textofinal' is used before it has been assigned a value. A null reference exception could result at runtime.

Ele executa o programa faz a gravação no BD. porem ele não acrecenta os zeros aos campos.

EXEMPLO:

O campo tem 5 caracteres.

se eu digitar apenas 3 caracteres, os outros 2 caracteres restante tem que ser preenchido com 0

ASSIM:

TEXTBOX

----------

|00150|

----------

Share this post


Link to post
Share on other sites
ribeiro55

Usa o PadLeft como te indiquei, antes de escreveres na base de dados.

Se o campo da tabela não for alfanumérico, é natural que os zeros à esquerda desapareçam pois não valem nada, matematicamente.


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
williamjda

Amigo:

Consegui fazer assim; porem quando eu vou digitar outros códigos ele não permite. por que ele já tem os cinco caracteres preenchido pelo zero.

Ai diminui para 3 no padleft porem ele me permite digitar apenas 2 caracteres somando com os três 0 que da cinco.

Ou seja: se eu digitar 00150 mas se eu quiser digitar 01510 ele não permite. o Código ficou assim mas acho que esta errado você poderia corrigi-lo para mim.

Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
        Dim texto As String = TextBox6.Text.ToString
        If TextBox6.Text.Length < 5 Then
            Dim tamanho As Integer = 5 - TextBox6.Text.Length

            For t As Integer = 1 To tamanho
                TextBox6.Text = TextBox6.Text.PadLeft(5, "0")
            Next
            TextBox6.Text = TextBox6.Text.PadLeft(5, "0")

        End If
    End Sub 

Preciso que ele me permita digitar até os 5 caracteres e que ele somente preencha com zero com meu código for menor que 5 caracteres.

Share this post


Link to post
Share on other sites
williamjda

Amigo muito obrigado mas consegui fazer o código funcionar. Depois de quebrar muito a cabeça, valeu pela ajuda.

O código ficou assim:

 Private Sub TextBox6_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox6.LostFocus
        Dim texto As String
        Dim textofinal As String
        Dim tamanho As Integer

        textofinal = ""

        texto = TextBox6.Text.ToString

        If TextBox6.Text.Length < 10 Then
            tamanho = TextBox6.Text.Length

            For t As Integer = 1 To 10 - tamanho
                textofinal = textofinal & "0"
            Next

            TextBox6.Text = textofinal & TextBox6.Text

        End If

        If TextBox6.Text = "0000000000" Then
            MsgBox("DEVE SER DIGITADO ALGUM VALOR NO CAMPO QUANTIDADE.", MsgBoxStyle.OkOnly, "INFORMAÇÃO")
            TextBox6.Text = ""
            TextBox6.Focus()
        End If

    End Sub

Sem mais estou a disposição

Att;

William

Share this post


Link to post
Share on other sites
FreiNando

Desculpem a intrusão, mas se fizeres como o ribeiro55 te indicou fica-te muito mais simples e correcto:

    Private Sub TextBox6_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox6.LostFocus

        If Val(TextBox6.Text) = 0 Then
            MsgBox("DEVE SER DIGITADO ALGUM VALOR NO CAMPO QUANTIDADE.", MsgBoxStyle.OkOnly, "INFORMAÇÃO")
            TextBox6.Text = ""
            TextBox6.Focus()
        Else
            TextBox6.Text = TextBox6.Text.PadLeft(10, "0")
        End If

    End Sub

Como fizeste apenas ganha a quantidade de linhas de código!  :wallbash:


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

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.