C# 重载事件的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:10:50
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
}
上面这个是重载winform的closing事件。
问题:
1.base.OnClosing(e);这里是什么意思啊?有什么作用?
2.winform已经有FormClosing事件了,为什么还要重载,重载有什么好处?
谢谢各位了,在线等候!
jiandong3471:您好!能说详细点吗?FormClosing事件也能做画面数据变更的check等相关处理。

1.base.OnClosing(e);这里是什么意思啊?有什么作用?
当窗体关闭的时候 系统有会发送关闭消息给窗体,然后窗体触发OnClosing事件,当你重载这个事件后,触发消息会发送到这个重载事件里面然后再去关闭窗体。打个比方 要关闭这个窗体需要2个步骤 A->B 2个步骤执行玩了以后才真正关闭了窗体。但是当你重载这这个事件后变成了A->C->B,c相当于你写的重载事件,而base.OnClosing(e);的作用是把消息发往B,假如你把base.OnClosing(e)干掉,那么这个ACB流程会走到C而不会继续往下走,也就是窗体不会关闭,大概意思就是在C里面调用B,让关闭消息走完。base.OnClosing(e);的大概意思就是继续按原来的消息规则继续下一步处理。你的任何操作都是操作系统通过消息的方式发给应用程序的。所以人截留这个消息来处理一些过滤信息,比如屏蔽某些按键。
2.winform已经有FormClosing事件了,为什么还要重载,重载有什么好处?
这个就是自己写程序的人处理了。可能他想在这里里面加一些过滤逻辑吧!

1.base.OnClosing(e)是继承的winform关闭事件。
2.重载:打个比方,系统给你提供了一个Option,但你觉得不合适,你就直接添加另外一个Option,方便你的具体需求,相当于系统给你开放了一个可编程接口,让你重载系统事件,方便做个性化设置。

1.base.OnClosing(e);这一句是执行父类的事件;它会处理一些在OnClosing事件中必须处理的东西.
2.重载的好处在于在重载中你可以处理自己的事情,比如加个弹出窗口"你确认要关闭吗?".

1.base.OnClosing(e);就是继承的winform的关闭事件
2.重写这个事件,应该是为了关闭时可以做其他相关事情,如画面数据变更的check等相关处理。

sfdew