Re: [問題] 兩個類別間如何相互引發事件?

看板C_Sharp作者 (....)時間17年前 (2007/08/23 13:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《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
文章代碼(AID): #16pHgJ2U (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #16pHgJ2U (C_Sharp)