はじめまして。
現在、ある基底クラスから派生したFormを複数定義して、
それぞれの派生Formから同じdelegeteを使って、
親クラスにイベントを通知しようと考えています。
public class BaseForm : Form
{
public event MyEventHandler MyEvent;
}
以上のようなクラスを定義し、以下のような派生クラスを定義します。
public class PattenA : BaseForm
{
}
public class PattenB : BaseForm
{
}
PattenAの中で
if( MyEvent != null )
{
MyEvent( this , new MyEventArgs() );
}
こんな事をしたかったのですが、
「MyEventはBaseForm内でしか使用できません」とエラーになってしまいます。
どうやら言語仕様のようなのですが、
一般的に、このような場合はどのような設計にするのが良いのでしょうか?
一応、以下のようなinterfaceを定義して、
各派生画面に実装させるように・・?とは考えてはみたのですが。。。
public interface IActiveAreaEvent
{
event MyEventHandler MyEvent;
}
どなたか、アドバイスお願いいたします。
イベントは一般的に,
public event EventHandler<T> EventName;
protected virtual void OnEventName (T e)
{
if (EventName != null)
{
EventName(this, e);
}
}
のように,protectedでvirtualなOn~と組にして書きます。
これをBaseFormに書いておいて,PatternAではOn~を呼び出せば,イベント登録を気にせ
ずに呼び出せます。
YuO様
回答が遅くなりましたが、問題は解決する事ができました。
ありがとうございました!