我正在开发一个具有许多面板的应用程序,这些面板都来自BasePanel
用户控件。
使用该应用程序与使用向导非常相似 - 每次不同的面板显示在所有其他面板之上。
我想要一个计时器,所以当没有用户活动时,会显示第一个面板。
这是基本面板代码:
public partial class BasePanel : UserControl
{
private Timer timer = new Timer();
public BasePanel()
{
InitializeComponent();
timer.Interval = 5000;
timer.Tick += timer_Tick;
foreach (Control control in Controls)
control.Click += Control_Click;
}
public event EventHandler NoActivity = delegate { };
private void timer_Tick(object sender, EventArgs e)
{
NoActivity(this, EventArgs.Empty);
}
private void Control_Click(object sender, EventArgs e)
{
timer.Stop();
timer.Start();
}
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
timer.Start();
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
timer.Stop();
}
}
问题:
在BasePanel
调用派生之前调用构造函数InitializeComponent()
。
由于BasePanel
没有自己的控件 - 没有控件注册到Control_Click
事件。
这是正常的继承行为,但仍然 - 我如何在基类中注册派生类的控件?