我们做了以下一个项目:
有一个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