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

事件对象没有初始化
我的思路:
事件发送类 
//声明事件委托
  public delegate void AddUserEventHandle(object sender, AddUserEventArgs e);
//事件触发方法,部分代码
  if (!UserList.ContainsKey(a[0]))
  {
  //将用户信息临时保存到hashtablez中
  UserList.Add(a[0], s);
  //此处出发事件,通知服务器界面增加一个用户数据;
  mAddUserEventArgs.UserName = a[0];
  mAddUserEventArgs.IpAddress = a[1];
  OnAddUser(mAddUserEventArgs);
  //启动线程
  Thread t = new Thread(new ParameterizedThreadStart(AcceptOneSocket));
  t.Start(s);
  }
//事件调用方法
 protected virtual void OnAddUser(AddUserEventArgs e)
  {
  if (eAddUserEvent != null)
  {
  eAddUserEvent(this, e);
  }
  }
事件接收类
//构造函数中订阅事件
 public FrmServer()
  {
  InitializeComponent();
  mQQTCPListner = new QQTCPListner();
  mQQTCPListner.eAddUserEvent += new AddUserEventHandle(mQQTCPListner_eAddUserEvent);
  }
//事件处理方法
  void mQQTCPListner_eAddUserEvent(object sender, AddUserEventArgs e)
  {
  item = new ListViewItem();
  //item
  item.Text = "选项一"; //显示文字
  item.Tag = "001"; //设置tag 用于隐藏信息 比如主键
  // item.ImageIndex = 0; //对应在imagelist中图片索引
  item.SubItems.Add(e.UserName);
  item.SubItems.Add(e.IpAddress);
  lvwUserList.Items.Add(item); //将列表项加入到ListView中
   
  }

问题:程序运行到事件调用方法中eAddUserEvent 对象为空;可调试时明明mQQTCPListner.eAddUserEvent += new AddUserEventHandle(mQQTCPListner_eAddUserEvent);有调用啊,什么问题啊?

------解决方案--------------------
可以看下别人怎么封装,如果感觉还是不明白那就看下VS里面那些控件的源文件。
估计有用吧。

------解决方案--------------------
把你的所有关于事件.eAddUserEvent 的代码都弄上来看看!