none
Criando uma classe RRS feed

  • Pergunta

  • Boa tarde pessoal, vê se vocês podem me ajudar. Nos meus programas eu faço alcumas consitências em meus campos númericos e Decimais. Cada textBox eu crio uma propriedade com os mesmos comando. Eu tentei criar uma classe e dentro dessa classe eu copiei os comando dessa minha propriedade, só que alguns comandos não são reconhecidos. O que eu devo mudar em meu código para que os camandos sejão reconhecidos?

    Na classe não é reconhecido os comandos e.KeyChar   e.Handled. O que eu posso fazer para reconhecer?

            private void txtAliquotaPIS_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
                {
                    e.Handled = true;
                    MessageBox.Show("Este campo aceita somente número e vírgula");
                }
                if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
                {
                    e.Handled = true;
                    MessageBox.Show("Este campo aceita somente uma vírgula");
                }
            }
    


    quarta-feira, 15 de abril de 2020 19:52

Respostas

  • Adicione um arquivo vazio(CodeFile) e adicione o codigo conforme exemplo abaixo.

    using System.Windows.Forms;
    
    internal static class ExtensionUtil
    {
        /// <summary>
        /// Exemplo de validação de teclas precionadas para campo numerico.
        /// ( Criado por Nego JL)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void NumericKeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
            {
                e.Handled = true;
                MessageBox.Show("Este campo aceita somente número e vírgula");
            }
            if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
                MessageBox.Show("Este campo aceita somente uma vírgula");
            }
        }
    }

    Depois chame ometodo estatico no evento do componente.

    Ex:

            private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                ExtensionUtil.NumericKeyPress(sender, e);
            }

    quinta-feira, 16 de abril de 2020 00:34

Todas as Respostas

  • Olá,

    Que plataforma você esta usando para fazer o programa? VS? Que versão?

    Se tiver usado Visual Studio, use um projeto que vai incluir todos os objetos que você vai precisar, como mostra abaixo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    quarta-feira, 15 de abril de 2020 21:28
    Moderador
  • Esusando o VS 2013. Eu fiz as alterações, só que continuou o problema, veja:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Interface.BLL
    {
        public class TextBoxValoresDecimaisInteirosCondicoes
        {
            public static void TextBoxValoresDecimaisInteirosCondicoes_KeyPress(object sender, EventArgs e)
            {
    
                if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
                {
                    e.Handled = true;
                    MessageBox.Show("Este campo aceita somente número e vírgula");
                }
                if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
                {
                    e.Handled = true;
                    MessageBox.Show("Este campo aceita somente uma vírgula");
                }
            }
    
        }
    }
    

    quarta-feira, 15 de abril de 2020 22:03
  • Adicione um arquivo vazio(CodeFile) e adicione o codigo conforme exemplo abaixo.

    using System.Windows.Forms;
    
    internal static class ExtensionUtil
    {
        /// <summary>
        /// Exemplo de validação de teclas precionadas para campo numerico.
        /// ( Criado por Nego JL)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void NumericKeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
            {
                e.Handled = true;
                MessageBox.Show("Este campo aceita somente número e vírgula");
            }
            if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
            {
                e.Handled = true;
                MessageBox.Show("Este campo aceita somente uma vírgula");
            }
        }
    }

    Depois chame ometodo estatico no evento do componente.

    Ex:

            private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                ExtensionUtil.NumericKeyPress(sender, e);
            }

    quinta-feira, 16 de abril de 2020 00:34
  • ainda está dando um erro.

    Error 1431 'TextBox' is an ambiguous reference between 'System.Windows.Forms.TextBox' and 'System.Web.UI.WebControls.TextBox' C:\Transportes\Interface\Interface\BLL\TextBoxValoresDecimaisInteirosCondicoes.cs 29 52 Interface


    quinta-feira, 16 de abril de 2020 00:45
  • Em TextBoxValoresDecimaisInteirosCondicoes você tem duas referencias:
    System.Windows.Forms e System.Web.UI.WebControls
    Remova a referencia que nào está usando ou as duas são necessárias?
    É Forms ou Web?

    quinta-feira, 16 de abril de 2020 01:55
  • Forms
    quinta-feira, 16 de abril de 2020 02:17
  • Acho que você pode remover using System.Web.UI.WebControls;

    quinta-feira, 16 de abril de 2020 11:05
  • Deu certo, muito obrigado
    quinta-feira, 16 de abril de 2020 14:56