我有一个StatusChanged事件,当对象的状态发生更改时,它会引发该事件—但是,应用程序需要根据新状态执行其他操作。
例如,如果新状态已断开,则必须更新状态栏文本并发送电子邮件通知。
所以,我想创建一个枚举,其中包含可能的状态(connected、disconnected、receivingdata、sendingdata等),并在事件被引发时用事件的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来解释为什么以及如何修复它:)