我想创建一个内置多个控件的UserControl
。这些控件的行为应与单选按钮相似,即。例如,其中一个的状态会影响其他人的状态。为此,我希望能够处理来自父级的每个控件的OnClick
事件。
一种解决方案可能是从子控件'UserControl
方法调用父方法,以执行全局OnClick
更改。类似的东西:
class Child : UserControl
{
...
protected override void OnClick(EventArgs z_args)
{
// do own stuff
((PartentType)Parent).ChangeStatus(this);
}
...
}
这是一个解决方案,但我想知道是否有更标准的优雅方式来解决这个问题。谢谢!
答案 0 :(得分:2)
不,这非常糟糕,控件永远不应该依赖于具有特定的父级。以与Windows窗体控件相同的方式执行此操作:如果父母可能感兴趣的某些有趣事情然后引发事件:
public event EventHandler StatusChanged;
public int Status {
get { ... }
}
protected override void OnClick(EventArgs z_args) {
// do own stuff
//...
var handler = StatusChanged;
if (handler != null) handler(this, EventArgs.Empty);
}
考虑将事件引发代码放在Status属性的私有setter中。