c#中委托、事件中的Object reference not set to an instance of an object

qaz2008 2009-09-11 02:00:59
代码如下:
public delegate void DClickHandler(object sender, DClickEventArgs ev);
public event DClickHandler DClick;
public delegate void UIChangedHandler(object sender, EventArgs e);
public event UIChangedHandler UIChanged;

private void AddStick(){
stick = new Stick();
stick.id = System.Math.Abs((int)DateTime.Now.Ticks);
stick.x = x;
stick.y = y;
stick.width = t_width;
stick.height = t_height;
StickSetFrm stickSetFrm = new StickSetFrm(stick);
stickSetFrm.ShowDialog();
if (stick.yes)
{
if (para.array==null)
{
para.array = new List<Stick>();
}
para.array.Add(stick);
}
UIChanged(this, new EventArgs());/////////出错的地方
}
为什么呐?
...全文
340 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qaz2008 2009-09-12
  • 打赏
  • 举报
回复
谢谢!!我来改改代码!
wuyq11 2009-09-11
  • 打赏
  • 举报
回复
UIChanged+=new UIChangedHandler(DrawMap);

class Class1
{
static void Main(string[] args)
{
Student s1=new Student();
Student s2=new Student();
s1.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK);
s2.RegisterOK +=new Student.DelegateRegisterOkEvent(Student_RegisterOK);
s1.Register();
s2.Register();
Console.ReadLine();
}
static void Student_RegisterOK()
{
Console.WriteLine("Hello");
}
}
class Student
{
public delegate void DelegateRegisterOkEvent();
public event DelegateRegisterOkEvent RegisterOK;
public string Name;
public void Register()
{
Console.WriteLine("Register");
RegisterOK();
}
}

klint_khl1 2009-09-11
  • 打赏
  • 举报
回复
public delegate void DClickHandler(object sender, DClickEventArgs ev);
public delegate void UIChangedHandler(object sender, EventArgs e);

public class Draw
{
public event UIChangedHandler UIChanged;
public event DClickHandler DClick;
private void AddStick(){
stick = new Stick();
stick.id = System.Math.Abs((int)DateTime.Now.Ticks);
stick.x = x;
stick.y = y;
stick.width = t_width;
stick.height = t_height;
StickSetFrm stickSetFrm = new StickSetFrm(stick);
stickSetFrm.ShowDialog();
if (stick.yes)
{
if (para.array==null)
{
para.array = new List <Stick>();
}
para.array.Add(stick);
}
UIChanged+=new UIChangedHandler(DrawMap);
if(UIChanged!=null)
UIChanged(this, new EventArgs());/////////出错的地方
}

private void DrawMap(object sender, EventArgs e)
{//画图行
}
}
xhy_ym 2009-09-11
  • 打赏
  • 举报
回复
顶一下
阿非 2009-09-11
  • 打赏
  • 举报
回复
这句是调用,不是赋值。

赋值 是类似

ClassName.UIChanged += new ClassName.UIChangedHandler(MethodName);


于这样的一句话
qaz2008 2009-09-11
  • 打赏
  • 举报
回复
UIChanged(this, new EventArgs());
不是对它的赋值调用吗?
qaz2008 2009-09-11
  • 打赏
  • 举报
回复
但是在,release状态下去会有图形
阿非 2009-09-11
  • 打赏
  • 举报
回复
你缺少一个赋值的过程
qaz2008 2009-09-11
  • 打赏
  • 举报
回复
我加过,但加上这一句就就永远没有动作(画图形)输出!!
郁闷!!
zgke 2009-09-11
  • 打赏
  • 举报
回复
使用了为空的事件

if(UIChanged!=null)UIChanged(this, new EventArgs());

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧