我宣佈一個訂閱事件:爲什麼訂閱的事件始終爲空?
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
。如何解決它?
如果您在'btnDelBar..'中聲明'SomeClass',那麼它的範圍在該方法內 – Sayse
它甚至不會編譯... – BartoszKP
您正在訂閱來自在同一方法中實例化的對象的事件,立即超出範圍。 –