none
ComboBox RRS feed

  • Pergunta

  • Olá, esses dias recebi um exemplo em VB para mascarar combo em formato mm/aaaa, mas nao consegui usar pq programo em C#, alguém poderia me mandar um ex em C# para eu mascarar o combo para ele receber valores em mm/aaaa???

     

    sexta-feira, 3 de novembro de 2006 11:53

Respostas

  • Fer_nanda,

    não domino bem o C#, porém fiz a conversão pra vc. Testa ai.

            // <summary>
            // Seleciona e retorna apenas caracteres numéricos
            // </summary>
             String RetornaNumero(String Valor)
        {

            //verifica se o texto é vazio
            if(Valor == "")
            {
                //retorna vazio
                return "";
                }

            //declara variáveis
            int iLoop; 
            String sValor  = String.Empty;
            char cLetra;

            //percorre caracteres da data
            for (iLoop = 0; iLoop <=  Valor.Length - 1; iLoop++)
        {
            cLetra = Valor[iLoop];   
            //verifica se o caracter atual é um dígito
            if (char.IsDigit(cLetra) || cLetra.Equals("/"))
                    {
                        //concatena os dígitos anteriores com o dígito atual
                        sValor += Valor.Substring(iLoop, 1);
                    }
                }
            //retorna o conteúdo somente com dígitos
            return sValor;

        }

           
            // <summary>
            // Formata data MM/AAAA
            // </summary>
            private String FormataMMAAAA(String sTexto)
            {
                sTexto = RetornaNumero(sTexto);
                //verifica se o número tem pelo menos 3 dígitos
                if(sTexto.Length > 3)
                {
                    //coloca barra na 3a posição
                    sTexto = sTexto.Substring(0, 2) + "/" + sTexto.Substring(2);
                }
                //retorna data formatada
                return sTexto;
            }
            // <summary>
            // Trata a digitação de números e barras
            // </summary>
            private void ComboBox1_KeyPress(Object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
                //verifica a tecla pressionada
                if(e.KeyChar == (char)Keys.Back || char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Divide)
                {
                }
                else
                {
                    //desconsidere esta tecla
                    e.Handled = true;
                }
            }
            // <summary>
            // formata a data digitado após a digitação
            // </summary>
            private void comboBox1_KeyUp_1(object sender, KeyEventArgs e)
            {
                comboBox1.Text = FormataMMAAAA(comboBox1.Text);
                comboBox1.SelectionStart = comboBox1.Text.Length;
            }

            // <summary>
            // formata a data ao sair do controle (previne previve colar texto indevido)
            // </summary>
            private void comboBox1_Leave_1(object sender, EventArgs e)
            {
                comboBox1.Text = FormataMMAAAA(comboBox1.Text);
            }

    domingo, 5 de novembro de 2006 12:39

Todas as Respostas

  • Quando você se refere a um combo, é um DropDownList né!? :D

    se for, vc pode fazer assim, no seu componente defina a propriedade

    DataTextFormatString='{"0:mm/yyyy"}'

    espero ter ajudado!

    []'s

    sexta-feira, 3 de novembro de 2006 17:27
  • Oi, tentei colocar o comando na propriedade FormatString mas nao deu diferença, ainda nao está mascarando o campo
    sexta-feira, 3 de novembro de 2006 18:03
  • Fer_nanda,

    já que vc não conseguiu e se ninguem se dispuser, vou ver se instalo o C# aqui e transformo o código que te passei em VB.NET pra C#, ok?

    http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=843778&SiteID=21
    domingo, 5 de novembro de 2006 00:57
  • Fer_nanda,

    não domino bem o C#, porém fiz a conversão pra vc. Testa ai.

            // <summary>
            // Seleciona e retorna apenas caracteres numéricos
            // </summary>
             String RetornaNumero(String Valor)
        {

            //verifica se o texto é vazio
            if(Valor == "")
            {
                //retorna vazio
                return "";
                }

            //declara variáveis
            int iLoop; 
            String sValor  = String.Empty;
            char cLetra;

            //percorre caracteres da data
            for (iLoop = 0; iLoop <=  Valor.Length - 1; iLoop++)
        {
            cLetra = Valor[iLoop];   
            //verifica se o caracter atual é um dígito
            if (char.IsDigit(cLetra) || cLetra.Equals("/"))
                    {
                        //concatena os dígitos anteriores com o dígito atual
                        sValor += Valor.Substring(iLoop, 1);
                    }
                }
            //retorna o conteúdo somente com dígitos
            return sValor;

        }

           
            // <summary>
            // Formata data MM/AAAA
            // </summary>
            private String FormataMMAAAA(String sTexto)
            {
                sTexto = RetornaNumero(sTexto);
                //verifica se o número tem pelo menos 3 dígitos
                if(sTexto.Length > 3)
                {
                    //coloca barra na 3a posição
                    sTexto = sTexto.Substring(0, 2) + "/" + sTexto.Substring(2);
                }
                //retorna data formatada
                return sTexto;
            }
            // <summary>
            // Trata a digitação de números e barras
            // </summary>
            private void ComboBox1_KeyPress(Object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
                //verifica a tecla pressionada
                if(e.KeyChar == (char)Keys.Back || char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Divide)
                {
                }
                else
                {
                    //desconsidere esta tecla
                    e.Handled = true;
                }
            }
            // <summary>
            // formata a data digitado após a digitação
            // </summary>
            private void comboBox1_KeyUp_1(object sender, KeyEventArgs e)
            {
                comboBox1.Text = FormataMMAAAA(comboBox1.Text);
                comboBox1.SelectionStart = comboBox1.Text.Length;
            }

            // <summary>
            // formata a data ao sair do controle (previne previve colar texto indevido)
            // </summary>
            private void comboBox1_Leave_1(object sender, EventArgs e)
            {
                comboBox1.Text = FormataMMAAAA(comboBox1.Text);
            }

    domingo, 5 de novembro de 2006 12:39
  • Olá Gesiel,

     

    Muitíssimo obrigada pela sua ajuda, agora eu testei e deu certo!!!!

    Ufa, menos um problema para eu resolver aqui na minha aplicação!!!!

    Valeu mesmo cara!!!

    Tudo di bom para vc!!!

    Abraços

    segunda-feira, 6 de novembro de 2006 11:04
  • Fer_nanda,
       
    não foi nada.
    qq coisa, grite, ok?
    tudo de bom pra vc tb.

    abraço.
    segunda-feira, 6 de novembro de 2006 11:56