在.NET C#3.5 Winforms中,我有一个用户控件,其中包含一些简单的子控件,如文本框,标签和按钮。目前,当我将用户控件的.Enabled
属性设置为false时,控件会相应变暗。但是,如果我使用自定义.BackColor
进行用户控制,有时调光并不像我希望的那样明显。
当.Enabled
设置为false时,有没有办法指定或更改用户控件的调光颜色?或者在相关的说明中,有没有办法在发生这种情况时调用方法?
答案 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
}