[Desenvolvimento] Exemplo de Maskedit em C# para APPs Windows Phone

8

maskedit-windows-phoneOlá pessoal, tudo bom?

Para responder à dúvida de um leitor do Blog, resolvi escrever esse post que demonstra um exemplo de como implementar um “maskedit” em C#. Nesse caso fiz um método que recebe por parâmetro o TextBox onde se deseja aplicar a máscara e formata os números digitados com duas casas decimais conforme o usuário os for digitando.

Como é possível observar na figura de exemplo ao lado, dentro do TextBox (txtValor) os números digitados vão sendo exibidos conforme a máscara aplicada “#,99” e no TextBlock (txtNumerosDigitados) exibo os números digitados sem a formatação aplicada pelo “maskedit”.

Toda ação de máscara ocorre no evento KeyDown do TextBox, onde verifico em primeiro lugar se a tecla pressionada é um número ou o BackSpace, caso contrário, quaisquer outras teclas serão desprezadas, ou seja, para essa máscara apenas números e BackSpace são aceitos.

Confira abaixo o código XAML utilizado para montar a interface do exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
  <TextBlock Text="BLOG DO EDUARDO H. RIZO" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
  <TextBlock Text="maskedit c#" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
 
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  <TextBlock HorizontalAlignment="Left" Margin="10,0,0,0" TextWrapping="Wrap" Text="Informe um valor:" VerticalAlignment="Top"/>
  <TextBox x:Name="txtValor" HorizontalAlignment="Left" Height="72" TextWrapping="Wrap" InputScope="Number" Text="" VerticalAlignment="Top" Width="456" TextAlignment="Right" KeyDown="txtValor_KeyDown" Margin="0,24,0,0" />
  <TextBlock x:Name="txbNumerosDigitados" HorizontalAlignment="Right" Margin="0,96,15,0" TextWrapping="Wrap" Text="..." VerticalAlignment="Top"/>
</Grid>
...

Para completar o exemplo, o código C# associado à implementação XAML demonstrada acima:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
...
public partial class MainPage : PhoneApplicationPage
{
  // Constructor
  public MainPage()
  {
    InitializeComponent();
    // Sample code to localize the ApplicationBar
    //BuildLocalizedApplicationBar();
  }
 
  string numero = "";
 
  private void MaskeditNumererico_DuasCasasDecimais(TextBox txt, KeyEventArgs e)
  {
  //Verifica de a tecla digitada foi algo diferente de números ou BackSpace
  if (e.Key != Key.Back && (e.Key < Key.D0 || e.Key > Key.D9))
  {
    e.Handled = true;
  }
  else
  {
    if (e.Key == Key.Back && numero.Length > 0) //Se digitou BackSpace então retiramos o último número digitado
      numero = numero.Substring(0, numero.Length - 1);
    else
      numero += Convert.ToChar(e.PlatformKeyCode).ToString(); //Concatenamos o número digitado aos já existentes
 
    //Verificações para realizar o maskedit em C#. Nesse caso o formato são números com 2 casas decimais
    if (numero.Length == 0)
      txt.Text = "";
    else if (numero.Length < 2)
      txt.Text = "0,0" + numero;
    else if (numero.Length == 2)
      txt.Text = "0," + numero;
    else
      txt.Text = numero.Substring(0, numero.Length - 2) + "," + numero.Substring(numero.Length - 2, 2);
    }
  }
 
  private void txtValor_KeyDown(object sender, KeyEventArgs e)
  {
    MaskeditNumererico_DuasCasasDecimais(txtValor, e);
 
    //TextBlock que exibe os números digitados sem a formatação do "maskedit"
    txbNumerosDigitados.Text = numero;
  }
 
...

Fica a dica !

 

Grande abraço,

Eduardo Henrique Rizo

MCP

Post Relacionado: 

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.

  • Eduardo Henrique Rizo

    Pessoal havia um bug no código, mas já corrigi no post.
    Abraços

  • Fabio Henrique Cardoso Nobre

    Muito bom. Queria umas aulas para programar para o WP. Alguem sabe de algum lugar que tem. De preferencia de graça.

    • thiago pires

      Eu aprendi a programar para WP usando conteúdos da internet mesmo(já tenho conhecimento em c#), a grande questão é fazer um app sozinho, tem que ter tempo, uma coisa que não tenho, porem se alguém do site estiver afim de montar uma equipe para desenvolver um app eu to dentro.

      • Fabio Henrique Cardoso Nobre

        Primeiro eu estou querendo fazer um app para faculdade … faço cienca da computação e achei uma sacanagem eles ensinar Android. Ou seja, vai focar so no mais barato. Eu como nao tenho Android, sou meio obrigado fazer meus aplicativo em WP.

        • thiago pires

          Vai por mim, sou formado em sistema de info, a faculdade não prepara vc para o mercado la fora, já sou analista/programador pleno.
          Corra por fora, estude usando a internet.

          • Fabio Henrique Cardoso Nobre

            E isso que estou fazendo cara estou correndo atrais.
            Fazer o que ainda bem que eu tenho a plataforma Visual Studio 2013 que eles derão na faculdade. Ou seja uso tudo original.

            Att

    • Fábio Radicchi Belotto

      Cara, tem a Microsoft Virtual Academy e tem o cheque Channel9, são onde eu estou estudando um pouco de C#

  • Erivelton Freitas

    C# é o mais próximo que chegamos da Linguagem de Deus *-*

    Ai ai, queria eu saber programar… Faria inúmeros apps para Windows Phone, e todos exclusivos!!!