为什么事件冒泡以及为什么不直接订阅click事件?

Die*_*kes 5 asp.net oop events encapsulation

我正在浏览一篇关于asp.net中事件冒泡的文章,并且知道虽然可以从包含页面订阅用户控件按钮的click事件,但"这样做会破坏一些面向对象的规则封装".更好的想法是在用户控件中发布一个事件,以允许任何感兴趣的各方处理该事件.

我的问题是,如何从包含页面直接订阅按钮的click事件会破坏面向对象的封装规则?

如果它是一个愚蠢的问题,请道歉.:|

谢谢!

Tob*_*oby 3

Button 应该由 UserControl 封装。

如果页面直接绑定到按钮上的事件,则页面现在依赖于UserControl 的内部工作。

页面应该使用 UserControl,而不是 UserControl 的按钮。如果 UserControl 的作者稍后想要删除该按钮并使用一些奇特的新方法来触发其“提交”事件,则您的页面可能会被破坏,因为该按钮可能不再存在。

就此而言,如果 UserControl 的所有者决定在 v1.1 中将按钮从 btnSubmit 重命名为 SubmissionButton,它也可能会破坏您的页面。

最好使用 UserControl 并让它关注自己的内部运作。