我使用C#,我想從一個類中觸發事件:C#觸發事件
所以,如果一個類的Price
財產被改變,那麼事件onPriceChanged
(類外)應該被解僱。 但是,我收到一個錯誤:
The name 'onPriceChanged' does not exist in the current context
我該如何解決這個問題? (我想我可以在事件處理程序傳遞給通過構造方法的類...但如果可能的話我寧願不要在事件處理程序傳遞給類)
這裏是我的代碼:
using System;
public delegate void delEventHandler();
class clsItem
{
//private static event delEventHandler _show;
private delEventHandler _show;
private int _price;
public clsItem() //Konstruktor
{
_show += new delEventHandler(Program.onPriceChanged); // error here : The name 'onPriceChanged' does not exist in the current context
}
public int Price
{
set
{
_price = value;
_show.Invoke(); //trigger Event when Price was changed
}
}
}
class Program
{
static void Main()
{
clsItem myItem = new clsItem();
myItem.Price = 123; //this should trigger Event "onPriceChanged"
}
//EventHandler
public static void onPriceChanged()
{
Console.WriteLine("Price was changed");
}
}
'_show + =新delEventHandler(Program.onPriceChanged);' – 2016-07-26 12:13:40
onPriceChanged是在不同的類(計劃)。 – ohadinho
你正在做什麼事情的完全相反。 clsItem類不應該知道誰在監聽它的事件。換句話說,'clsItem'應該公開一個公共事件,並且在創建新的實例之後,您應該在'Main'方法中附加處理程序。 – Groo