Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evandro Sousa

MaskEdit em GridView

Recommended Posts

Bom dia pessoal,

estou com o seguinte problema:

O usuario digitara um valor dentro do gridView, um valor que deverá ser preenchido da seguinte maneira 0,000, 00,000, 000,000 ou 0.000,00

Atualmente tenho um método que eu mesmo criei que ele trabalha com Mask. Eu gostaria de saber se tem como eu add um MaskEdit dentro do GridView, ou se tem alguma maneira de "fazer" um mask via gambiarra.

Pois eu terei que pegar o valor digitado pelo usuario 0,002 + o valor que eu tinha antes, 0,025 que seria igual a 0,027.

Atualmente eu não consigo utilizar uma "mask" para o usuario digitar 0,002, apenas 2, se ele quiser digitar 0,002, ele deverá digitar na mão.

 

Outra coisa, tem como eu bloquear no gridView para o usuario digitar apenas numero?

 

Meu grid é preenchido com DataTable.

 

Como faço hoje:

        private void dtgItensPedido_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (dtgItensPedido.CurrentRow.Cells[3].Value.ToString() != string.Empty)
            {
                int i = 0;
                foreach (DataRow dr in dtItens.Rows)
                {
                    if (dtItens.Rows[i][0].ToString() == dtgItensPedido.CurrentRow.Cells[0].Value.ToString())
                    {
                        dtItens.Rows[i][3] = dtgItensPedido.CurrentRow.Cells[3].Value.ToString();

                        decimal newQuantidade, qtdAtual;
                        newQuantidade = decimal.Parse(dtItens.Rows[i][3].ToString());

                        if (dtItens.Rows[i][10].ToString() == dtItens.Rows[i][9].ToString())
                        {
                            qtdAtual = newQuantidade + decimal.Parse(dtItens.Rows[i][9].ToString());
                        }
                        else
                        {
                            qtdAtual = newQuantidade + decimal.Parse(dtItens.Rows[i][10].ToString());
                        }
                        dtItens.Rows[i][10] = qtdAtual;
                        dtItens.Rows[i][3] = null;

                        dtgItensPedido.Refresh();
                    }
                    i++;
                }
                PreencheGridItens();
            }
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal eu já consegui fazer a maskara monetaria, fiz desta maneira:

 

private void dtgItensPedido_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
 {
 if (e.ColumnIndex == 2)
 { 
 double newValor = double.Parse(e.Value.ToString());
 e.Value = newValor.ToString("N3");
 }
 }

Funciou que é uma maravilha.

 

Mas agora preciso bloquear que o usuario digite letras, e que possa digitar apenas numeros.

 

Tentei utilizar no KeyPress isso mas nao deu:

private void dtgItensPedido_KeyPress(object sender, KeyPressEventArgs e)
 {
 if (char.IsNumber(e.KeyChar) || e.KeyChar.ToString() == "\b")
 {
 base.OnKeyPress(e);
 }
 else
 {
 e.Handled = true;
 }
 }

Sabem me informar como posso fazer?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, nem isso ele fez.

 

fui no KeyPress e coloquei para debugar, vi que nem entrar ele esta entrando.

 

 

Ele chegou a entrar no evento ao menos?

 

Abraços...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.