none
Personalizar componente MaskedTextBox RRS feed

  • Pergunta

  • bom dia amigos, a fim de facilitar o desenvolvimento gostaria de personalizar meu MaskedTextBox, definindo todos os tipos de mascara que eu gostaria que ele tivesse, assim  na implementação do projeto eu só informaria para o objeto o tipo de mascara e ele já assumiria automaticamente...

    tentei criar uma classe herdando de MaskedTextBox e alterar a propriedade Mask, porém não tive sucesso, gostaria de saber se é possível fazer isso, se sim, como devo fazer ?

    • Tipo Alterado Marcos SJ segunda-feira, 21 de setembro de 2015 19:12 Adequação
    • Tipo Alterado Levi DomingosModerator terça-feira, 20 de outubro de 2015 15:16
    segunda-feira, 21 de setembro de 2015 12:13

Respostas

  • "gostaria de saber se é possível fazer isso"

    É possivel, sim.

    "se sim, como devo fazer ?"

    Existem muitas formas para fazer, veja uma dela.

    using System.ComponentModel;
    
    namespace myComponents
    {
        public partial class MaskedTextBox : System.Windows.Forms.MaskedTextBox
        {
            public MaskedTextBox()
            {
    
            }
    
            private DataType dataType;
    
            [DefaultValue(DataType.Default)]//define o valor padrão da propriedade (opcional)
            [Category("My Propertyes")]//  (opcional)
            [DisplayName("Mask")]// para exibir em propriedades com o nome 'Mask'  (opcional)
            [Description("Exemplo System.Windows.Forms.MaskedTextBox. \n Creado por Almir JL.")]//  (opcional)
            [RefreshProperties(RefreshProperties.All)]//  (opcional)
            public DataType DataTypeS
            {
                get
                {
                    return dataType;
                }
                set
                {
                    if (dataType == value)
                    {
                        return;
                    }
                    dataType = value;
    
                    switch (dataType)
                    {
                        case DataType.Default:
                            this.Mask = string.Empty;
                            break;
                        case DataType.Date:
                            this.Mask = "00/00/0000";
                            break;
                        case DataType.Integer:
                            this.Mask = "999999";
                            break;
                        case DataType.Decimal_8_2:
                            this.Mask = "999999,99";
                            break;
                        case DataType.Decimal_12_3:
                            this.Mask = "999999999,999";
                            break;
                        case DataType.Moeda:
                            this.Mask = "$ 999.999.999,99";
                            break;
                    }
                }
            }
    
            // ocultar a propriedade Mask   (opcional)
            [Browsable(false)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            public new string Mask
            {
                get
                {
                    return base.Mask;
                }
                set
                {
                    base.Mask = value;
                }
            }
    
        }
    
        // neste enum teras que incluir todos os tipos de mascaras que irá utilizar
        public enum DataType
        {
            Default = 0,
            Date = 1,
            Integer = 2,
            Decimal_8_2 = 3,
            Decimal_12_3 = 4,
            Moeda = 5
        }
    }

    Entendi que fosse isso que voce estava tentando fazer.

    Se não conseguir solucionar, poste seu codigo para facilitar.

    terça-feira, 22 de setembro de 2015 18:12

Todas as Respostas

  • "gostaria de saber se é possível fazer isso"

    É possivel, sim.

    "se sim, como devo fazer ?"

    Existem muitas formas para fazer, veja uma dela.

    using System.ComponentModel;
    
    namespace myComponents
    {
        public partial class MaskedTextBox : System.Windows.Forms.MaskedTextBox
        {
            public MaskedTextBox()
            {
    
            }
    
            private DataType dataType;
    
            [DefaultValue(DataType.Default)]//define o valor padrão da propriedade (opcional)
            [Category("My Propertyes")]//  (opcional)
            [DisplayName("Mask")]// para exibir em propriedades com o nome 'Mask'  (opcional)
            [Description("Exemplo System.Windows.Forms.MaskedTextBox. \n Creado por Almir JL.")]//  (opcional)
            [RefreshProperties(RefreshProperties.All)]//  (opcional)
            public DataType DataTypeS
            {
                get
                {
                    return dataType;
                }
                set
                {
                    if (dataType == value)
                    {
                        return;
                    }
                    dataType = value;
    
                    switch (dataType)
                    {
                        case DataType.Default:
                            this.Mask = string.Empty;
                            break;
                        case DataType.Date:
                            this.Mask = "00/00/0000";
                            break;
                        case DataType.Integer:
                            this.Mask = "999999";
                            break;
                        case DataType.Decimal_8_2:
                            this.Mask = "999999,99";
                            break;
                        case DataType.Decimal_12_3:
                            this.Mask = "999999999,999";
                            break;
                        case DataType.Moeda:
                            this.Mask = "$ 999.999.999,99";
                            break;
                    }
                }
            }
    
            // ocultar a propriedade Mask   (opcional)
            [Browsable(false)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            public new string Mask
            {
                get
                {
                    return base.Mask;
                }
                set
                {
                    base.Mask = value;
                }
            }
    
        }
    
        // neste enum teras que incluir todos os tipos de mascaras que irá utilizar
        public enum DataType
        {
            Default = 0,
            Date = 1,
            Integer = 2,
            Decimal_8_2 = 3,
            Decimal_12_3 = 4,
            Moeda = 5
        }
    }

    Entendi que fosse isso que voce estava tentando fazer.

    Se não conseguir solucionar, poste seu codigo para facilitar.

    terça-feira, 22 de setembro de 2015 18:12
  • "gostaria de saber se é possível fazer isso"

    É possivel, sim.

    "se sim, como devo fazer ?"

    Existem muitas formas para fazer, veja uma dela.

    using System.ComponentModel;
    
    namespace myComponents
    {
        public partial class MaskedTextBox : System.Windows.Forms.MaskedTextBox
        {
            public MaskedTextBox()
            {
    
            }
    
            private DataType dataType;
    
            [DefaultValue(DataType.Default)]//define o valor padrão da propriedade (opcional)
            [Category("My Propertyes")]//  (opcional)
            [DisplayName("Mask")]// para exibir em propriedades com o nome 'Mask'  (opcional)
            [Description("Exemplo System.Windows.Forms.MaskedTextBox. \n Creado por Almir JL.")]//  (opcional)
            [RefreshProperties(RefreshProperties.All)]//  (opcional)
            public DataType DataTypeS
            {
                get
                {
                    return dataType;
                }
                set
                {
                    if (dataType == value)
                    {
                        return;
                    }
                    dataType = value;
    
                    switch (dataType)
                    {
                        case DataType.Default:
                            this.Mask = string.Empty;
                            break;
                        case DataType.Date:
                            this.Mask = "00/00/0000";
                            break;
                        case DataType.Integer:
                            this.Mask = "999999";
                            break;
                        case DataType.Decimal_8_2:
                            this.Mask = "999999,99";
                            break;
                        case DataType.Decimal_12_3:
                            this.Mask = "999999999,999";
                            break;
                        case DataType.Moeda:
                            this.Mask = "$ 999.999.999,99";
                            break;
                    }
                }
            }
    
            // ocultar a propriedade Mask   (opcional)
            [Browsable(false)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            public new string Mask
            {
                get
                {
                    return base.Mask;
                }
                set
                {
                    base.Mask = value;
                }
            }
    
        }
    
        // neste enum teras que incluir todos os tipos de mascaras que irá utilizar
        public enum DataType
        {
            Default = 0,
            Date = 1,
            Integer = 2,
            Decimal_8_2 = 3,
            Decimal_12_3 = 4,
            Moeda = 5
        }
    }

    Entendi que fosse isso que voce estava tentando fazer.

    Se não conseguir solucionar, poste seu codigo para facilitar.

    muito obrigado, deu certo.
    sexta-feira, 16 de outubro de 2015 13:10