c# - 重写表单事件方法的基本调用的必要性

标签 c# .net winforms visual-studio-2010

当重写表单的事件方法时,到目前为止,我发现调用基本方法和不调用它之间没有区别。

- 重写的方法到底做了什么?

提前致谢。

最佳答案

这些方法的 MSDN 文档对此毫不掩饰。他们有一个“实现者注意事项”短语,要求您调用基本方法。大多数基本方法实现都非常干净,除了引发与该方法关联的事件之外什么也不做。因此,如果您重写 OnPaint,执行所有绘制操作而不调用 base.OnPaint(),则不会引发 Paint 事件。它工作得很好,但对于另一个想要使用 Paint 事件并且不知道为什么他的代码不起作用的程序员来说可能是一个不愉快的惊喜。

并非所有这些基本方法都那么简单,它们有时确实会做额外的事情。就像 OnFormClosing() 调用 ValidateChildren() 一样。这可能很重要,或者您可能无意中不在乎。控制的复杂性是一个因素。一个很好的例子是 DataGridView,当您跳过碱基调用时,它不太可能正常工作。这种不当行为很难诊断。

冒这个险没有什么意义,你没有时间机器来告诉你这不会造成麻烦。

关于此问题,您应该关心的只有一个方面,问题中没有其他问题。您应该先调用基本方法,然后再编写自定义方法。还是应该先自定义,然后调用基本方法?这就是这些方法存在的原因。谁是老大就由你来决定。

关于c# - 重写表单事件方法的基本调用的必要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8422903/

相关文章:

c# - MVC 局部 View 问题

c# - 如何使用 (?!...) 正则表达式模式跳过整个不匹配的部分?

c# - 如何将jquery添加到asp.net页面并格式化gridview列

c# - 匹配所有数字但拆分为单个字符

c# - directshow.net 网络摄像头覆盖透明面板

c# - 需要帮助了解 List<T>.Sort(IComparer(T)) 如何知道要排序的值

c# - 如何使我的 WinForms 应用程序具有 DPI 感知能力

c# - Windows 窗体在闪屏后落后

c# - 是否可以创建可以在 Windows 中以编程方式登录用户的服务或应用程序

c# - ef core 2.0中有复杂类型的列类型