每当基本表单中的特定属性发生更改时,我想在派生表单上执行一些代码。
表单在表单上实现一些常见的东西(skining等)
示例:
.
我一直在处理抽象方法,但我无法弄清楚如何解决它。
如果我将A声明为抽象,则无法在设计器中打开B.
实际上,真正的代码有点复杂,因为我有一个A基类(具有常用函数的表单)和B,C,D,它们是更具体的派生形式:B带按钮navitagion,C表示因此,当我在我的应用程序中创建表单时,我必须继承自B或C,...
感谢您的帮助
答案 0 :(得分:2)
您可以在基类中将属性声明为虚拟,然后在派生类中覆盖它,从派生类的setter中调用Foo
方法。由于多态性,您的派生属性将始终被访问,即使您的对象被引用为基类实例。
class A
{
public virtual bool Value { get; set; }
}
class B : A
{
public override bool Value
{
get
{
return base.Value;
}
set
{
if (base.Value != value)
{
base.Value = value;
Foo();
}
}
}
private void Foo()
{
// code I want to run when base class property changes
}
}