Ir ao conteúdo
  • Cadastre-se

C# - Habilitação condicional de propriedade em design-time


Posts recomendados

Amigos, 

Estou desenvolvendo um componente em C# que herda de TextBox. Um componente simples, com validações e máscaras apenas. 

O problema é que tenho uma propriedade Tipo de Dados, com vários atributos possíveis, CPF, CNPJ, RG, Título de Eleitor, etc..
E o atributo Geral que é para o caso do programador não querer habilitar validações nem máscaras. Nesse caso, o componente se comportaria como uma TextBox normal, só com opções extras de design do componente. 

Assim, gostaria que as propriedades booleanas Validação e Máscara permanecessem desabilitadas [Enable(false)] para a propriedade Tipo de Dados Geral, mas fossem habilitadas [Enable(true)] para as demais opções... 

Agora, nunca trabalhei com desenvolvimento em design-time e não tenho a menor ideia de como fazê-lo. 

Alguém poderia indicar algum material ou teria alguma sugestão de código para isso?

Obrigado a todos!
 

Link para o comentário
Compartilhar em outros sites

Estou anexando uma imagem que talvez ajude a compreender a necessidade.

Nela a propriedade Mask está habilitada para alteração. O que eu preciso é que ela não esteja, a não ser que a propriedade Data Type esteja com atributo diferente de Geral.
 

Tentei criar a interface, conforme abaixo, pra propriedade Validation (que tem o mesmo escopo e deve ter o mesmo comportamento da Mask (que não coloquei na Interface ainda, está fora, segundo código), só que desse jeito, a propriedade Validation nem aparece no painel de propriedades, como podem reparar na imagem em anexo.

 #region TESTES
        
        public interface IReadOnlyProperties
        {
            bool ValidationPropertie { get; set; }
        }

        public class IsReadOnly : IReadOnlyProperties
        {
            private bool _validationStatus;
            [ReadOnly(true)]
            [Browsable(true)]
            [DisplayName("Validation")]
            [DefaultValue(false)]

            public bool ValidationPropertie
            {
                get { return _validationStatus; }
                set { _validationStatus = value; }
            }
            //public bool ValidationPropertie { get; set; }
        }

        public class IsNotReadOnly : IReadOnlyProperties
        {
            private bool _validationStatus;

            [ReadOnly(false)]
            [Browsable(true)]
            [DisplayName("Validation")]
            [DefaultValue(false)]

            public bool ValidationPropertie
            {
                get { return _validationStatus; }
                set { _validationStatus = value; }
            }
            //public bool ValidationPropertie { get; set; }

        }

        public void TESTE()
        {
            MessageBox.Show("Entrou em Teste");

            IReadOnlyProperties instance = null;
            if (DataType != myT_TextBox_Component._DataType.Geral)
            {
                instance = new IsReadOnly();
            }
            else
            {
                instance = new IsNotReadOnly();
            }

        }

        #endregion TESTES
private bool _maskStatus;

            [Browsable(true)]
            [DisplayName("Mask")]
            [DefaultValue(false)]
            public bool MaskPropertie
            {
                get { return _maskStatus; }
                set { _maskStatus = value; }
            }

 

Sem Título-4.jpg

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!