[英]Why is subscribed event always null?
我在以下位置聲明對事件的訂閱:
public class MainClass
{
public void btndel_bar_Click(object sender, RoutedEventArgs e)
{
SomeClass sc = new SomeClass();
sc.FieldUpdate += new SomeClass.FieldUpdateHandler(sc_FieldUpdate);
}
void sc_FieldUpdate(object sender, ValueEventArgs e)
{
MessageBox.Show(e.Smth_property);
}
}
這是我想聽的事件:
public class Someclass
{
public delegate void FieldUpdateHandler(object sender, ValueEventArgs e);
public event FieldUpdateHandler FieldUpdate;
void Somemethod()
{
string str = "Steel";
ValueEventArgs args = new ValueEventArgs(str);
FieldUpdate(this, args);
}
}
承載數據的類:
public class ValueEventArgs : EventArgs
{
private string smth;
public ValueEventArgs(string smth)
{
this.smth = smth;
}
public string Smth_property
{
get { return smth; }
}
}
我總是有FieldUpdate=null
。 怎么解決呢?
您在構造函數中調用Somemethod()
,然后調用代碼才有機會添加事件處理程序。
因此,該事件仍然為空。
創建SomeClass
對象后,事件將重新初始化。
將您的事件設為靜態,以便SomeClass的多個對象可以共享它
public static event FieldUpdateHandler FieldUpdate;
我已經閱讀了有關委托人和事件的文章,閱讀后我一直想着要再次進行所有操作。 我又做了一次,一切正常! 因此,一開始我做錯了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.