日期:2014-05-18  浏览次数:20945 次

delegate 未将对象引用设置到对象的实例
namespace D
{
class A
{
  public delegate void Sign_StatusChangeHandler(Sign_StatusChangeEventArgs e);

  public event Sign_StatusChangeHandler Sign_StatusChanged;
   
  public void insert()
  {
  string trno="123445";
  int week=1;
Sign_StatusChanged(new Sign_StatusChangeEventArgs(trno,week)); }

}
  public class Sign_StatusChangeEventArgs : EventArgs
  {
  public string Center { get; set; }
  public int WeekDay { get; set; }

  public Sign_StatusChangeEventArgs(string center, int week)
  {
  Center = center;
  WeekDay = week;

  }

  }
}

namespace D
{ public partial class StudentClass : DevExpress.XtraEditors.XtraForm
  {
  public StudentClass()
  {
  InitializeComponent();
  }  
  A a=new A();  
  private void StudentClass_Load(object sender, EventArgs e)
  {
  a.Sign_StatusChanged +=new A.Sign_StatusChangeHandler(sign_Sign_StatusChanged);
  }
  private void sign_Sign_StatusChanged(Sign_StatusChangeEventArgs e)
  {
  MessageBox.Show(e.Center);
  MessageBox.Show(e.WeekDay);

  }
   
  }
}

------解决方案--------------------
Sign_StatusChanged没有赋初始值,
------解决方案--------------------
insert何时调用的,那时候肯定还没有绑定事件,访问为null
------解决方案--------------------
哪块报这个错误了
你的事件是注册了 但是没有调用啊 你没有调用Clss A的Insert()方法 也就没有调用事件哇
还有就是调用事件的时候
C# code

public void insert()
  {
  string trno="123445";
  int week=1;
if(Sign_StatusChanged!=null)
{
Sign_StatusChanged(new Sign_StatusChangeEventArgs(trno,week)); 
}
}
整体来说 你的这块比较混乱  没理清楚

}