事件对象没有初始化
我的思路:
事件发送类
//声明事件委托
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 的代码都弄上来看看!