Olá pessoal, gostaria de postar hoje um artigo falando de uma dúvida recebida por email de um amigo de São Paulo. Ele gostaria de colocar o maskedTextBox digitando da direita para esquerda, pois a máscara é do tipo valor e ele gostaria de digitar começando dos centavos.
Referência:
Ferramenta de desenvolvimento Visual Studio .NET 2008
Linguagem: C#
Plataforma: Windows Form
Dessa forma, criei um formulário do tipo Windows Forms e comecei a verificar as propriedades. Ta certo que com o TextBox ele funciona alterando uma propriedade, mas com o masked não funciona.
Para resolver o problema tive que programar um pouco no código C# e tudo funcionou.
Código:
Imagem 1
Na imagem 1, existem dois campos com o maskedTextBox. O primeiro começa da esquerda para direita e o segundo da direita para esquerda. Basta colocar a propriedade RightToLeft = YES. Mesmo com a propriedade atribuída, o curso sempre começa da esquerda para direita.
Olhando nas propriedades do masked, não existe mesmo uma maneira para começar da direita para esquerda.
Propriedade atribuída da máscara.
Imagem 2
Nos eventos, precisei clicar no KeyPress do maskedTextBox e adicionar algumas linhas de códigos. (Imagem 3)
Imagem 3
Segue o código colocado. (Code 1.1)
private void maskedTextBox2_KeyPress(object sender, KeyPressEventArgs e)
{
string buff = "";
int i;
if (maskedTextBox2.MaskCompleted)
{
e.Handled = true;
return;
}
char[] chars = maskedTextBox2.Text.PadLeft(5, ' ').ToCharArray();
for (i = 0; i < chars.Length - 1; i++)
chars[i] = chars[i + 1];
chars[i] = e.KeyChar;
for (i = 0; i < chars.Length; i++)
buff += chars[i];
maskedTextBox2.Text = buff;
}
Code 1.1
Depois disso, o texto começou da direita para a esquerda. Espero ter ajudado e qualquer dúvida, pode entrar em contato pelo site obrigado.
Imagem final.