代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

基于启用的属性更改用户控件的属性

  •  3
  • JYelton Melchior Blausand  · 技术社区  · 14 年前

    在.NETC#3.5WinForms中,我有一个用户控件,带有一些简单的子控件,如文本框、标签和按钮。当前当我设置 .Enabled 属性为false时,控件相应变暗。但是,如果我使用自定义 .BackColor 对于用户控件,有时调光并不像我希望的那样明显。

    。已启用 是否设置为false?或者在相关的注释中,有没有一种方法可以在发生这种情况时调用方法?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Anthony Pegram    14 年前

    控件有一个EnabledChange事件,您可以点击该事件。为用户控件创建此事件的处理程序,并相应地更改其控件的属性。

        2
  •  2
  •   max    14 年前

    您可以覆盖 .OnEnabledChanged(EventArgs e) 方法,如果您不想订阅 EnabledChanged .Enable 未标记为虚拟的属性:

    protected override OnEnabledChanged(EventArgs e)
    {
        base.OnEnabledChanged(e);
        // your code here
    }
    
        3
  •  1
  •   JYelton Melchior Blausand    14 年前

    最后我重写了用户控件的基本属性,因为我希望处理状态更改的代码位于用户控件本身(而不是订阅事件)。

    public new bool Enabled
    {
        get
        {
            return base.Enabled;
        }
        set
        {
            base.Enabled = value;
            // code to alter the appearance of control
        }
    }
    

    编辑:

    自订偶数的建议 在内部 用户控件似乎比隐藏未启用虚拟的属性干净得多。对其他答案的进一步编辑为我提供了更好的解决方案:

    this.EnabledChanged += new EventHandler(UserControl_EnabledChanged);
    void UserControl_EnabledChanged(object sender, EventArgs e)
    {
        // code to alter appearance of control
    }