設計の質問)派生クラスのイベントを共通化したい – プログラミング – Home

設計の質問)派生クラスのイベントを共通...
 
通知
すべてクリア

設計の質問)派生クラスのイベントを共通化したい


ともあき
 ともあき
(@ともあき)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

はじめまして。
現在、ある基底クラスから派生した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;
}

どなたか、アドバイスお願いいたします。


引用解決済
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

イベントは一般的に,
public event EventHandler<T> EventName;

protected virtual void OnEventName (T e)
{
if (EventName != null)
{
EventName(this, e);
}
}
のように,protectedでvirtualなOn~と組にして書きます。
これをBaseFormに書いておいて,PatternAではOn~を呼び出せば,イベント登録を気にせ
ずに呼び出せます。


返信引用
ともあき
 ともあき
(@ともあき)
ゲスト
結合: 16年前
投稿: 2
Topic starter  

YuO様

回答が遅くなりましたが、問題は解決する事ができました。

ありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました