Ir ao conteúdo

Posts recomendados

Postado

Boa noite,

Tenho em meu form um maskedtextbox com a máscara R$ 0000,00.

Estou com 2 dúvidas:

1 - como faço para na hora de preencher esse campo, ao usuário digitar o caractere '.' ou ',' os números inseridos ficarem perto da virgula e ir direto para os números finais?

2 - quando busco do banco de dados e o valor é por exemplo 100,00.. No campo fica R$ 1000,0 .. se for 10,00 fica R$ 1000,

Alguém pode me dar uma luz, aceito outras soluções (como usar textbox, retirar o R$ etc..)? :P

Obrigado

Postado

A primeira parte não entendi... "numeros ficarem perto da virgula... etc..."

Pra colcoar no formato certo, você tem que levar em consideração 1 coisa, o R$ é o próprio MaskekTextBox que coloca?

Se for você ao invés de colocar por exemplo :

txtValor.Text = valor_do_banco.ToString(); você coloca :

txtValor.Text = valor_do_banco.ToString("N");

Esse "N" diz ao VS qual o formato da mascara que vai colocar, esse formato ai é o que separa milhares por "." e centavos por ",".

1000,00 no banco com este formato ficaria 1.000,00.

Se o R$ for você que colcoa você deve colocar :

txtValor.Text = valor_do_banco.ToString("C");

Este "C" faz a mesma coisa do "N" colocando ainda o R$ na frente.

Pesquise os outros formatos que se este não te atender os outros devem...

ATT,

LBarcelosM

Postado

Não sei se é o jeito mais certo, mas resolvi o problema da importação do BD com PadLeft e essa sua dica me ajudou sim. Obrigado

Quanto a primeira parte é tipo assim.. O maskedtextbox está com a máscara $ 0000,00 .. Para deixar 30,50 eu to tendo que teclar 2 vezes espaço depois começar a inserir 3050, eu queria que ao digitar . (ponto) ou , (virgula) o valor que eu já inseri fosse para perto da virgula do masked, e o cursor fosse direto para depois da virgula. Tipo assim

Lá está "R$ | , "

Eu digito 30 e teclo . ou ,

O campo ficasse R$ 30,| " para eu poder digitar os centavos

  • 5 anos depois...
Postado

Crie um textbox com o nome txt_valor e atribua os eventos conforme o código abaixo;

string valor;
        private void txt_valor_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != Convert.ToChar(Keys.Back))
            {
                if (e.KeyChar == ',')
                {
                    e.Handled = (txt_valor.Text.Contains(","));
                }
                else
                    e.Handled = true;
            }            
        }

        private void txt_valor_Leave(object sender, EventArgs e)
        {
            valor = txt_valor.Text.Replace("R$", "");
            txt_valor.Text = string.Format("{0:C}", Convert.ToDouble(valor));
        }

        private void txt_valor_KeyUp(object sender, KeyEventArgs e)
        {
        	valor = txt_valor.Text.Replace("R$","").Replace(",","").Replace(" ","").Replace("00,","");
        	if(valor.Length == 0)
        	{
        		txt_valor.Text = "0,00"+valor;
        	}
        	if(valor.Length == 1)
        	{
        		txt_valor.Text = "0,0"+valor;
        	}
        	if(valor.Length == 2)
        	{
        		txt_valor.Text = "0,"+valor;
        	}
        	else if(valor.Length >= 3)
        	{
        		if(txt_valor.Text.StartsWith("0,"))
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",").Replace("0,","");
        		}
        		else if(txt_valor.Text.Contains("00,"))
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",").Replace("00,","");
        		}
        		else
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",");
        		}
        	}        	
        	valor = txt_valor.Text;
            txt_valor.Text = string.Format("{0:C}", Convert.ToDouble(valor));
            txt_valor.Select(txt_valor.Text.Length,0);
        }

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...