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
これは通常の継承動作ですが、基本クラスで派生クラスのコントロールを登録するにはどうすればよいですか?