[英]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.