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

时间:2010-06-03 23:25:55

标签: c# winforms

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

如果您不想订阅.OnEnabledChanged(EventArgs e)事件,则可以覆盖EnabledChanged方法,这比隐藏Control的.Enable属性更好,而该属性未标记为虚拟:

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

答案 2 :(得分:0)

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

这就是我所做的:

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
}