设计时的条件属性

已加入
2016年10月11日
留言内容
1
编程经验
10+
嗨,朋友们,




我正在开发从TextBox继承的C#组件。一个简单的组件,仅包含验证和掩码。



问题是我有一个数据类型属性,具有几个可能的属性(CPF,CNPJ,RG,投票标题等),而程序员使用的常规属性不想启用验证或掩码。在这种情况下,该组件的行为就像普通的TextBox一样,只是具有额外的组件设计选项。


因此,我希望对“常规数据类型”属性禁用“布尔验证”和“掩码”属性,而对于其他选项则启用[启用(true)]。



我以前从未从事过设计时开发工作,因此我不知道该怎么做。

我附上一张可以帮助您了解我所需要的图像。


在其中启用了Mask属性以进行更改。我需要的是未启用它,除非“数据类型”属性具有“常规”以外的属性。

我尝试为Validation属性创建下面的接口(该属性具有相同的作用域,并且必须具有相同的Mask行为(根据代码,我尚未将其放在Interface中,它在外部),但是这样,Validation属性不会出现在属性面板中,如您在所附图像中看到的那样。


C#:
#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


C#:
[B]​[/B]


private bool _maskStatus;


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

附件

  • SemTítulo-4.jpg
    SemTítulo-4.jpg
    66.3 KB · 观看次数: 67
最佳 底部