我有兩個班,我必須做出一個事件這些類之間進行通信。簡單的事件C#
Class a
{
public delegate void delegat(int a);
public event delegat exit;
...
private void a_FormClosed(object sender, FormClosedEventArgs e)
{
// My event named exit should run here, but I get exception!
exit(100);
}
}
Class b
{
a instance=new a();
a.exit+=new a.delegat(my_fun);
...
private void my_fun(int x)
{
if(x==100)
do_smth;
...
}
}
但事實是,我得到異常:「對象引用不設置到對象的實例」。 我不明白我在做什麼錯了?我應該在哪裏做一個這樣的新實例? 感謝您的幫助!
你怎麼跑這個代碼?你創建一個b的實例嗎?你確定例外來自於你在b中的同一個例子嗎? – BlackBear
你最大的問題是,你調用類的非靜態方法。你創建了一個稱爲「實例」的實例,但從未使用它,因爲你直接在a上調用一切。改爲使用「實例」調用它們,看看會發生什麼。當我推「B」形式的一些按鈕「A」類的實例 – Hoeloe
製成。然後,'a'類表單由a.ShowDialog()函數顯示,我在'a'表單上做了一些事情。正如你可以看到我的事件應該在其他事件觸發時觸發(form'closed'事件)。也許這是錯的嗎? –