オブジェクトのステータスが変化したときに発生する StatusChanged イベントがありますが、アプリケーションは新しいステータスに基づいて追加のアクションを実行する必要があります。
たとえば、新しいステータスが [切断] の場合、ステータス バーのテキストを更新し、電子メール通知を送信する必要があります。
そのため、考えられるステータス (Connected、Disconnected、RecomingData、SendingData など) を持つ Enum を作成し、イベントが発生したときにイベントの EventArgs パラメーターと共にそれを送信したいと考えました (以下を参照)。
オブジェクトを定義します。
class ModemComm
{
public event CommanderEventHandler ModemCommEvent;
public delegate void CommanderEventHandler(object source, ModemCommEventArgs e);
public void Connect()
{
ModemCommEvent(this, new ModemCommEventArgs ModemCommEventArgs.eModemCommEvent.Connected));
}
}
新しい EventArgs パラメータを定義します。
public class ModemCommEventArgs : EventArgs{
public enum eModemCommEvent
{
Idle,
Connected,
Disconnected,
SendingData,
ReceivingData
}
public eModemCommEvent eventType { get; set; }
public string eventMessage { get; set; }
public ModemCommEventArgs(eModemCommEvent eventType, string eventMessage)
{
this.eventMessage = eventMessage;
this.eventType = eventType;
}
}
次に、アプリケーションでイベントのハンドラーを作成します。
ModemComm comm = new ModemComm();
comm.ModemCommEvent += OnModemCommEvent;
と
private void OnModemCommEvent(object source, ModemCommEventArgs e)
{
}
問題は、オブジェクトがイベントを発生させようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されることです。誰かがそれを修正する理由と方法をn00b用語で説明できることを願っています:)