Ped*_*C88 5 c# events user-controls event-handling winforms
我有一个包含项目列表的用户控件,当currentIndex发生更改时我会引发一个事件,同时,当它发生变化时,我必须调用另外两个方法两个验证并更改控件的外观(更改图像和阻止/解除阻止)一些按钮).
我想知道的,主要是出于好奇,因为它已经在工作,是什么时候调用这两种方法更合适?
我应该在CurrentIndex
房产内打电话给他们吗?我应该打电话给他们OnCurrentIndexChanged(...)
吗?我应该在课堂上处理这个事件吗?
我假设您已经实现了标准事件生成模式并创建了OnCurrentIndexChanged,protected virtual
以便派生类可以覆盖该方法并更改事件生成和/或处理.
不幸的是,这需要阅读茶叶,为什么有人想要覆盖这个方法呢?而且更严重的是,当他们这样做时,如何超越这种方法会破坏你的控制?对于那些不熟悉代码的人来说,这非常难以猜测,对你来说也不是很容易.这里应用的原则,在.NET框架代码中使用,也是尽可能少的.只是举起活动,别的什么.当派生类做一些愚蠢的事情时,它最大限度地减少了破损的可能性,但是完全常见,比如不调用base.OnCurrentIndexChanged.
控件的行为是UserControl的实现细节.因此,在CurrentIndex属性设置器中更改其属性,然后调用OnCurrentIndexChanged().如果需要,任何派生自您的类的人都可以覆盖该行为.当他们忘记调用你的OnCurrentIndexChanged()方法时没有出错.但请注意,您需要保护控件变量而不是私有.因此,如果需要,他们可以覆盖行为.
如果这对你来说太怪异,请不要犹豫,不要使用虚拟方法.用你的控件来容纳成千上万的程序员是不常见的:)