作者Rokund (....)
看板C_Sharp
标题Re: [问题] 两个类别间如何相互引发事件?
时间Thu Aug 23 13:26:42 2007
※ 引述《pttmimic (烦烦烦..)》之铭言:
: public class mymain
: {
: private static frmMain mainwin = new frmMain(IDsoft);
: //private static frmMain mainwin = new frmMain();
: private static SoftID IDsoft = new SoftID(mainwin);
: static void Main()
: {
: Application.Run(mainwin);
: }
: }
: }
: 我可以通过编译,可是执行时会产生以下错误讯息
: 类型'System.NullReferenceException'的未处理例外状况发生於TestProject
: 其他资讯 :并未将物件参考设为物件的执行个体
: IDE并会停在frmMain 的建构式
: IDsoft.onReceive += new ReceiveEventHandler(this.onAddNewMessage)
: 这一行
: 程式码看起来很乱,不知道有没有更好的办法,不好意思打扰大家,感恩。
frmMain建构子的参数传送进去前还没被new出来呀!
你可以在mainwin和IDsoft都new出来後,再把事件都注册好
不一定要在建构子做。
或者如果IDSoft只会被frmMain用到的话,直接宣告在frmMain里
成为它的一个member,然後
private void btnStart_Click(object sender, System.EventArgs e)
{
IDsoft.Listen();
}
而建构子可能像这样
public frmMain()
{
IDsoft=new SoftID();
IDSoft.onReceive+=new ReceiveEventHandler(this.onAddMessage);
}
应该比较单纯吧!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.147.164