我們做了以下一個項目:
有一個GlobalNotifier類,它定義的事件,我們希望在應用程序的不同模塊來使用,這樣
public static class GlobalNotifier
{
public static event VoidEventHandler EnvrionmentChanged;
public static void OnEnvrionmentChanged()
{
if (EnvrionmentChanged != null)
{
EnvrionmentChanged();
}
}
}
然後,你可以提高這個事件在任何地方,當你需要讓其他應用程序知道環境已經改變,像這樣
GlobalNotifier.OnEnvrionmentChanged();
而且你也可以su只要你想得到有關環境已經改變的事實的通知,就可以訂閱這個活動。
public ReportingService()
{
GlobalNotifier.EnvrionmentChanged += new VoidEventHandler(GlobalNotifier_EnvrionmentChanged);
}
void GlobalNotifier_EnvrionmentChanged()
{
//reset settings
_reportSettings = null;
}
所以,當你改變了環境,你提到的事件,大家誰需要了解這一點,執行一些動作,被通報。 可能與您需要實現的類似。
另外,如果你需要傳遞參數,你可以定義事件,你喜歡的任何方式,基本上是 - 我的意思是我想從表B.說提高,形式A的事件像
public static event VoidEventHandler<SomeObject, List<OtherObject>> SomethingUpdated;
public static void OnSomethingUpdated(SomeObject sender, List<OtherObject> associations)
{
if (SomethingUpdated != null)
{
SomethingUpdated(sender, associations);
}
}
// ...
MyClass.SomethingUpdated+= new VoidEventHandler<SomeObject, List<OtherObject>>(MyClass_SomethingUpdated);
// ...
void MyClass_SomethingUpdated(SomeObject param1, List<OtherObject> param2)
{
//do something
}
,提供下面的Form B Form_A.FormClosing + = new System.Windows.Forms.FormClosingEventHandler(------);如果這是正確的,請告訴我如何傳遞對象和事件參數以形成A – Anuya 2009-09-04 02:10:29
您可以在公開方法中公開On ...(),但正如Joel所說,如果您想手動提升事件而不實際調用Form.Close(),你可能做錯了什麼。 – mgbowen 2009-09-04 02:12:57
@ darkassassin93,給出了我的場景更多的解釋。 – Anuya 2009-09-04 02:21:11