none
Campos Decimais Em TextBox RRS feed

  • Pergunta

  • Tenho um TextBox que é populado com um valor do banco por um BindingSource.

    O valor no banco não está gravado com números decimais, mas queria que o TextBox exibisse com casas decimais.

    sexta-feira, 10 de maio de 2013 17:46

Respostas

  • Olá,

    Lá por estar preenchendo via BindingSource isso não o impossibilita de mudar / atribuir o texto do seu TextBox.

    Faça da seguinte forma:

        - No evento "TextChanged" do seu TextBox, coloque o código desta forma:

    if ( SeuTxt.Text != "" )
    {
    // Pode usar também a forma que o Leonardo disse
    // "N2" em vez de "C". string valor = preco_totalTextBox.Text.ToString("C"); preco_totalTextBox.Text = valor; }

    Cumpz, ADAE.


    • Editado AD_AE segunda-feira, 13 de maio de 2013 10:34 Correção de um erro ortográfico
    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:56
    segunda-feira, 13 de maio de 2013 10:29
  • Olá,

    Desculpe foi erro meu, mude para isto:

    if (preco_totalTextBox.Text != "")
    {
          string preco = preco_totalTextBox.Text;
          preco_totalTextBox.Text = preco.ToString("C");
    }

    Cumpz, ADAE.

    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:56
    segunda-feira, 13 de maio de 2013 17:06
  • Olá,

    Tente desta forma:

    decimal valor = decimal.Parse(preco_totalTextBox.Text;
    string convertido = String.Format("{0:C}", valor);
    preco_totalTextBox.Text = convertido;

    Cumpz, ADAE.


    • Editado AD_AE segunda-feira, 13 de maio de 2013 19:20
    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:55
    segunda-feira, 13 de maio de 2013 19:09
  • Olá,

    Pode colocar no evento leave do seu textbox.

    Cumpz, ADAE.

    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:55
    terça-feira, 14 de maio de 2013 08:07

Todas as Respostas

  • Como assim Rodrigo? Qual é o tipo de dado que está salvo na tabela?

    Todo caso, para converter para decimal é só fazer assim:

    TextBox1.Text = SeuCampo.ToString("N2");

    sexta-feira, 10 de maio de 2013 17:52
  • o campo da tabela do BD esta como FLOAT(10,2)

    Mas quando salva um valor exato por exemplo 130, é salvo 130 nele.

    Só quando dá um valor quebrado que ele salva com as casas decimais.

    Mas no caso, eu estou preenchendo o TextBox automaticamente via um BindingSource, entao acho que não teria como eu converter por esse código que vc me mostrou

    Mas msm assim valew pela ajuda ;D

    sexta-feira, 10 de maio de 2013 18:04
  • Posta seu código, que aí fica melhor pra resolver seu problema
    sexta-feira, 10 de maio de 2013 18:08
  • //LAOD DO FORM
    //preenche os TEXTBOX com o que há no BD
    this.vendasTableAdapter.Fill(this.brumartDataSet.vendas);
    
    //BOTAO PARA GRAVAR NO BANCO
    try
    {
           vendasBindingSource.EndEdit();
           vendasTableAdapter.Update(brumartDataSet);
           tableAdapterManager.UpdateAll(brumartDataSet);
    
           MessageBox.Show("Salvo com sucesso!", "Salvo", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (Exception ex)
    {
           MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    sábado, 11 de maio de 2013 02:49
  • Você pode carregar de uma maneira simples:

     double valor = 1000;
    textBox1.Text = valor.ToString("C");

    Neste caso eu tenho uma variavel com valor, esta variavel esta somente para ilustrar, mas poderia ser uma propriedade, um campo de sua lista retornada de seu banco de dados, e desta maneira já irá apresentar com as casas decimais.

    "Simples assim"

    sábado, 11 de maio de 2013 03:47
  • Por favor não esquecer de marcar a resposta caso tenha te ajudado ok!

    Você pode carregar de uma maneira simples:

     double valor = 1000;
    textBox1.Text = valor.ToString("C");

    Neste caso eu tenho uma variavel com valor, esta variavel esta somente para ilustrar, mas poderia ser uma propriedade, um campo de sua lista retornada de seu banco de dados, e desta maneira já irá apresentar com as casas decimais.

    "Simples assim"

    sábado, 11 de maio de 2013 03:48
  • Como eu disse, não sou eu que populo o TextBox, é via BindingSource, automaticamente é populado

    Então não tenho como eu atribuir o ToString() ao TextBox...

    Não existe alguma propriedade ou evento do TextBox que dê para colocar as casas decimais?
    domingo, 12 de maio de 2013 03:53
  • Utilize String.Format

    Ex: string.format("{0:d}",campoquedesejamostrar);

    Onde 0 (Zero) - é o seu primeiro parametro

    :d - Formato de exibição da informação

    Veja se esse link te ajuda:  http://msdn.microsoft.com/pt-br/library/system.string.format.aspx

    domingo, 12 de maio de 2013 17:30
  • No LOAD do Form fiz assim:

    String.Format("{0:0.00}", Convert.ToDouble(preco_totalTextBox.Text));
    
    // tambem tentei assim:
    String.Format("{0:0.00}", preco_totalTextBox.Text);

    Mas continua sem os campos decimais

    domingo, 12 de maio de 2013 17:39
  • Faz assim :

    string.Format("Total do Extrato: {0:c}", VALOR);

    {0:c} -> ja converte para decimal

    Exemplo 2:

    string.Format("Total do Extrato: 
    {0:##,###.###}
    ", VALOR);



    • Editado Mr. GMSOFT domingo, 12 de maio de 2013 18:50
    • Sugerido como Resposta Mr. GMSOFT domingo, 12 de maio de 2013 18:53
    domingo, 12 de maio de 2013 18:20
  • Mas tem um porém, eu estou populando o TextBox automáticamente via um BindingSource,

    eu não atribuo o valor ao TetBox manualmente para colocar o String.Format....
    domingo, 12 de maio de 2013 19:00
  • Olá,

    Lá por estar preenchendo via BindingSource isso não o impossibilita de mudar / atribuir o texto do seu TextBox.

    Faça da seguinte forma:

        - No evento "TextChanged" do seu TextBox, coloque o código desta forma:

    if ( SeuTxt.Text != "" )
    {
    // Pode usar também a forma que o Leonardo disse
    // "N2" em vez de "C". string valor = preco_totalTextBox.Text.ToString("C"); preco_totalTextBox.Text = valor; }

    Cumpz, ADAE.


    • Editado AD_AE segunda-feira, 13 de maio de 2013 10:34 Correção de um erro ortográfico
    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:56
    segunda-feira, 13 de maio de 2013 10:29
  • Não sei o porque, mas fiz certinho e está dando ero no argumento do ToString()


    if (preco_totalTextBox.Text != "")
    {
          string preco = preco_totalTextBox.Text.ToString("C");
          preco_totalTextBox.Text = preco;
    }



    segunda-feira, 13 de maio de 2013 16:03
  • Olá,

    Desculpe foi erro meu, mude para isto:

    if (preco_totalTextBox.Text != "")
    {
          string preco = preco_totalTextBox.Text;
          preco_totalTextBox.Text = preco.ToString("C");
    }

    Cumpz, ADAE.

    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:56
    segunda-feira, 13 de maio de 2013 17:06
  • Deu o mesmo erro:

    segunda-feira, 13 de maio de 2013 17:24
  • Olá,

    Tente desta forma:

    decimal valor = decimal.Parse(preco_totalTextBox.Text;
    string convertido = String.Format("{0:C}", valor);
    preco_totalTextBox.Text = convertido;

    Cumpz, ADAE.


    • Editado AD_AE segunda-feira, 13 de maio de 2013 19:20
    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:55
    segunda-feira, 13 de maio de 2013 19:09
  • Deu certo, mas tem um problema:

    Eu coloquei no evento TextChanged, mas sempre que o valor muda ele atribui esse valor...

    Tem um TextBox que eu não posso digitar nele, eu atribuo o valor apenas programaticmente, ai dá certo,

    Mas tem um outro TextBox que eu digito o valor e depois salvo no banco, e eu puis o mesmo código no evento TextChanged, mas sempre que eu digito o valor eu não consigo mudar a casa decimal, só consigo mudar os numeros inteiros.

    Não tem algum evento ou propriedade do TextBox que resolva isso?
    segunda-feira, 13 de maio de 2013 20:15
  • Olá,

    Pode colocar no evento leave do seu textbox.

    Cumpz, ADAE.

    • Marcado como Resposta Rodrigo1810 terça-feira, 14 de maio de 2013 16:55
    terça-feira, 14 de maio de 2013 08:07
  • Certinho, vlw ;D

    só por curiosidade, tem como fazer o mesmo com um campo de um DataGridView?
    terça-feira, 14 de maio de 2013 17:55