none
Como formatar um textbox dinamicamente? RRS feed

  • Pergunta

  • Pesoal,

    Sou iniciante no WPF, e tenho uma aplicação com uma window que possui um teclado númerio virtual, e o requisito é que a medida que o usuário for clicando nos botões do teclado, o valor seja exibido e formatado dinamicamente  textbox. Exatamente como em uma tela de depósito bancário.

    Alguém pode me ajudar?

    Agradeço desde já.


    Duan Brito - Analista de Sistemas/Programador
    terça-feira, 16 de agosto de 2011 13:12

Respostas

  • Pessoal,

    Esse código resolve o problema:

    private void btnTeclado_Click(object sender, RoutedEventArgs e)
      {
       
        txtValor.Text += ((Button)sender).Content.ToString();
    
        if (txtValor.Text.Length == 1)
        {
         txtValor.Text = "0,0" + txtValor.Text;
        }
        else
        {
         decimal valor = Convert.ToDecimal(txtValor.Text) * 10;
         txtValor.Text = valor.ToString("N2");
        }
       }
    
    

     


    Duan Brito - Analista de Sistemas/Programador
    • Marcado como Resposta Duan Brito quarta-feira, 17 de agosto de 2011 17:59
    quarta-feira, 17 de agosto de 2011 17:59

Todas as Respostas

  • Bom dia,
            Você pode usar o evento Clik do botão e no evento pedir para mostrar o valor na textBox. Ex:
    private void btnA_Click(object sender, RoutedEventArgs e)
    {
       textBox1.Text += 'A'; // arqui é passado o valor para a textbox utilizo o += para concatenar os valores
    }
    
    Também poderá fazer verificando pelo tabela de codigo ASCII.
    terça-feira, 16 de agosto de 2011 14:14
  • Olá!

    Como o Wesley Larentes falou, você pode usar o evneto Click dos botoes...

    Entretanto, se você estiver escrevendo a sua aplicação com MVVM, fica muito mais fácil e organizado usar Commands!

    Segue um exemplo:

    XAML:

    <Button Content="1" Command="{Binding IncluirDigito}" CommandParameter="1"/>
    <Button Content="2" Command="{Binding IncluirDigito}" CommandParameter="2"/>
    .
    .
    .<br/><TextBox Text="{Binding Visor}"/>
    
    Na sua ViewModel:
    public string Visor
    {
     get{return _visor;}
     set {_visor = value; OnPropertyChanged("Visor");}
    }
    
    public void IncluirDigito_Execute(object parameter)
    {
      this.Visor = String.Concat(this.Visor, parameter.ToString());
    }
    

    Lembrando que estou usando o RelayCommand (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx)

    p.s. Não entendia parte do formatar... Como assim? Explique melhor seu objetivo.

    terça-feira, 16 de agosto de 2011 18:09
  • Pessoal,

    Vou tentar me expressar melhor.

    O problema não está exatamente em exibir os valores que são clicados e sim colocá-los em formato de moeda no textbox, exatamente como em uma tela de deposíto bancário.

    Por exemplo: Quando o usuário clicar no 1, é pra aparecer no textbox: 0,01. Em seguida se ele clicar no 2, é pra aparecer no textbox 0,12...e assim sucessivamente.

     


    Duan Brito - Analista de Sistemas/Programador
    terça-feira, 16 de agosto de 2011 20:22
  • Pessoal,

    Esse código resolve o problema:

    private void btnTeclado_Click(object sender, RoutedEventArgs e)
      {
       
        txtValor.Text += ((Button)sender).Content.ToString();
    
        if (txtValor.Text.Length == 1)
        {
         txtValor.Text = "0,0" + txtValor.Text;
        }
        else
        {
         decimal valor = Convert.ToDecimal(txtValor.Text) * 10;
         txtValor.Text = valor.ToString("N2");
        }
       }
    
    

     


    Duan Brito - Analista de Sistemas/Programador
    quarta-feira, 17 de agosto de 2011 17:59
  • Pessoal,

    Esse código resolve o problema:

    private void btnTeclado_Click(object sender, RoutedEventArgs e)
      {
       
        txtValor.Text += ((Button)sender).Content.ToString();
    
        if (txtValor.Text.Length == 1)
        {
         txtValor.Text = "0,0" + txtValor.Text;
        }
        else
        {
         decimal valor = Convert.ToDecimal(txtValor.Text) * 10;
         txtValor.Text = valor.ToString("N2");
        }
       }
    
    

     


    Duan Brito - Analista de Sistemas/Programador
    • Marcado como Resposta Duan Brito quarta-feira, 17 de agosto de 2011 17:59
    quarta-feira, 17 de agosto de 2011 17:59