情况是这样的我有一个控件,它有事件在控件的定义中呈现,对于这个事件是附加处理程序我正在寻找一种方式来显示某种类型的消息,如果在某些类中使用此控件另一个处理程序附加到此事件 恭喜, Iordan避免再次附加事件
Q
避免再次附加事件
0
A
回答
0
这并不是一个好方法。使用事件时,控件通常不应依赖于附加的事件处理程序的数量。无论是否有0或27个事件处理程序对事件做出反应,它都应该可以工作。如果你想有一个机制,你有更多的控制权,你应该考虑使用委托。
如果出于某种原因限制使用事件模型并希望控制事件处理程序的分配,一种方法可能是继承原始类,在该类中创建具有相同名称和签名的事件作为基类(使用new
关键字使原来的事件是隐藏的),并跟踪事件处理程序如何安装和拆卸:
public class BaseClass
{
public event EventHandler SomeEvent;
}
public class MyClass : BaseClass
{
private int _refCount = 0;
public new event EventHandler SomeEvent
{
add
{
if (_refCount > 0)
{
// handler already attached
}
base.SomeEvent += value;
_refCount++;
}
remove
{
base.SomeEvent -= value;
_refCount--;
}
}
}
0
我很困惑。
你能检测到'+ = new EventHandler(...)'的调用并停止它...什么?
我认为你只需要更好地组织你的代码。或者重新提出你的问题。
2
不公开揭露的事件。将其公开为属性。这会给你控制时,外部类的附加处理
MyClass类 { 私人事件处理_myEvent;在这这里
+0
想想这是他正在寻找的。不错,不知道你可以在C#中做这种事情 – James 2009-08-12 08:05:50
相关问题
- 1. 实体框架 - 避免再次查询
- 2. 避免再次启动应用程序
- 3. 如何避免多次注册事件
- 4. 避免多次加入
- 5. 我如何避免再次加载相同的图像?
- 6. 在完成活动时避免再次加载数据
- 7. CacheEntryCreated事件 - 再次
- 8. 避免FullCalendar中的事件叠加
- 9. 避免回发GridView事件
- 10. 避免wget将index.html附加到链接
- 11. codeigniter避免将引号附加到值
- 12. 附加事件
- 13. 附加事件
- 14. 避免加载jQuery的多次
- 15. 如何避免被追加多次
- 16. 避免多次重新加载xml
- 17. 避免多次加载纹理
- 18. 要避免再次运行该代码,单击刷新
- 19. 同步数据,以避免造成同一观察者再次
- 20. ajax评级脚本 - 再次避免投票
- 21. 避免相同的值使用的Math.random再次出现()
- 22. 页面引用时避免上次事件
- 23. Silverlight避免请求一个事件两次
- 24. JQuery事件在加载时触发一次,而不是再次
- 25. 添加属性的实体类,如何避免再次写入所有属性?
- 26. C#。如何在发送邮件时避免附加图像
- 27. 附加属性以避免自定义控件
- 28. 避免加载
- 29. 避免发布两次? gridview控件
- 30. 试图避免两次读取文件
}
更多信息认为他是希望只显示一条消息时,处理程序订阅渲染事件....不认为这是可能的。 – James 2009-08-12 07:55:11
嗯可能是我有点不清楚这里的情况是我有我的控制继承DataGridView控件我已附加CellPaint事件的Eventhandler。我希望如果有人使用我的控件附加了另一个eventHandler来处理这个事件以发出一些消息,说明这会导致不同的问题 祝你好运, Iordan – IordanTanev 2009-08-12 07:55:35