Usuário com melhor resposta
Personalizar componente MaskedTextBox

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
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.
- Marcado como Resposta Levi DomingosModerator terça-feira, 20 de outubro de 2015 15:17
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.
- Marcado como Resposta Levi DomingosModerator terça-feira, 20 de outubro de 2015 15:17
-
"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.