繁体   English   中英

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

[英]Changing properties on user control based on Enabled property

在.NET C#3.5 Winforms中,我有一个用户控件,其中包含一些简单的子控件,如文本框,标签和按钮。 目前,当我将用户控件的.Enabled属性设置为false时,控件将相应地变暗。 但是,如果我使用自定义.BackColor进行用户控制,有时调光并不像我希望的那样明显。

.Enabled设置为false时,有没有办法指定或更改用户控件的调光颜色? 或者在相关的说明中,有没有办法在发生这种情况时调用方法?

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

如果你不想订阅EnabledChanged事件,你可以覆盖.OnEnabledChanged(EventArgs e)方法,这是一个比隐藏Control的.Enable属性更好的解决方案,它没有标记为虚拟:

protected override OnEnabledChanged(EventArgs e)
{
    base.OnEnabledChanged(e);
    // your code here
}

我最终覆盖了用户控件的基本属性,因为我希望处理状态更改的代码在用户控件本身(而不是订阅事件)。

这就是我做的:

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

编辑:

甚至用户控件自我订阅的建议似乎比隐藏非虚拟的Enabled属性要清晰得多。 对其他答案的进一步编辑为我提供了更好的解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM