`
truelove12358
  • 浏览: 77515 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

C#WinForm窗体事件执行次序

 
阅读更多

一、以下是网络上可搜索到的次序

当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:
System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChanged
System.Windows.Forms.Form.Load
System.Windows.Forms.Control.VisibleChanged
System.Windows.Forms.Form.Activated
System.Windows.Forms.Form.Shown

当应用程序关闭时,会以下列顺序引发主要表单的关闭事件:
System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate

二、以下是我测试的次序,全部protected override 这些事件,并且在其base.的前后分别处理一次,如下

  1. protectedoverridevoidOnLoad(EventArgse)
  2. {
  3. textBox1.Text+="OnLoad1"+"/r/n";
  4. base.OnLoad(e);
  5. textBox1.Text+="OnLoad2"+"/r/n";
  6. }

OnClientSizeChanged1
OnClientSizeChanged2
OnClientSizeChanged1
OnClientSizeChanged2

// Loyout要多次执行
OnLayout1
OnLayout2
OnHanleCreated1
OnHanleCreated2
OnInvalidated1
OnInvalidated2

// 注意这里的一点点变化
OnCreateControl1
OnLoad1
OnLoad2
OnCreateControl2

//
OnLayout1
OnLayout2
OnActivated1
OnActivated2
OnShown1
OnShown2
OnPain1
OnPain2

希望这个次序能给大家带来用处。。可以在不同事件中去处理所需要的代码

三、以下是代码源。C# 2008 Express

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.ComponentModel;
  4. usingSystem.Data;
  5. usingSystem.Drawing;
  6. //usingSystem.Linq;
  7. usingSystem.Text;
  8. usingSystem.Windows.Forms;
  9. namespaceWindowsFormsApplication1
  10. {
  11. publicpartialclassForm1:Form
  12. {
  13. publicForm1()
  14. {
  15. InitializeComponent();
  16. }
  17. //输出窗体事件的执行次序
  18. protectedoverridevoidOnActivated(EventArgse)
  19. {
  20. textBox1.Text+="OnActivated1"+"/r/n";
  21. base.OnActivated(e);
  22. textBox1.Text+="OnActivated2"+"/r/n";
  23. }
  24. protectedoverridevoidOnClientSizeChanged(EventArgse)
  25. {
  26. textBox1.Text+="OnClientSizeChanged1"+"/r/n";
  27. base.OnClientSizeChanged(e);
  28. textBox1.Text+="OnClientSizeChanged2"+"/r/n";
  29. }
  30. protectedoverridevoidOnCreateControl()
  31. {
  32. textBox1.Text+="OnCreateControl1"+"/r/n";
  33. base.OnCreateControl();
  34. textBox1.Text+="OnCreateControl2"+"/r/n";
  35. }
  36. protectedoverridevoidOnDeactivate(EventArgse)
  37. {
  38. textBox1.Text+="OnDeactivate1"+"/r/n";
  39. base.OnDeactivate(e);
  40. textBox1.Text+="OnDeactivate2"+"/r/n";
  41. }
  42. protectedoverridevoidOnHandleCreated(EventArgse)
  43. {
  44. textBox1.Text+="OnHanleCreated1"+"/r/n";
  45. base.OnHandleCreated(e);
  46. textBox1.Text+="OnHanleCreated2"+"/r/n";
  47. }
  48. protectedoverridevoidOnHandleDestroyed(EventArgse)
  49. {
  50. textBox1.Text+="OnHanleDestoryed1"+"/r/n";
  51. base.OnHandleDestroyed(e);
  52. textBox1.Text+="OnHanleDestoryed2"+"/r/n";
  53. }
  54. protectedoverridevoidOnInvalidated(InvalidateEventArgse)
  55. {
  56. textBox1.Text+="OnInvalidated1"+"/r/n";
  57. base.OnInvalidated(e);
  58. textBox1.Text+="OnInvalidated2"+"/r/n";
  59. }
  60. protectedoverridevoidOnLayout(LayoutEventArgslevent)
  61. {
  62. textBox1.Text+="OnLayout1"+"/r/n";
  63. base.OnLayout(levent);
  64. textBox1.Text+="OnLayout2"+"/r/n";
  65. }
  66. protectedoverridevoidOnLoad(EventArgse)
  67. {
  68. textBox1.Text+="OnLoad1"+"/r/n";
  69. base.OnLoad(e);
  70. textBox1.Text+="OnLoad2"+"/r/n";
  71. }
  72. protectedoverridevoidOnPaint(PaintEventArgse)
  73. {
  74. textBox1.Text+="OnPain1"+"/r/n";
  75. base.OnPaint(e);
  76. textBox1.Text+="OnPain2"+"/r/n";
  77. }
  78. protectedoverridevoidOnShown(EventArgse)
  79. {
  80. textBox1.Text+="OnShown1"+"/r/n";
  81. base.OnShown(e);
  82. textBox1.Text+="OnShown2"+"/r/n";
  83. }
  84. }
  85. }

分享到:
评论

相关推荐

    C#编程 WinForm窗体开发 Selected(源码)

    C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm窗体开发 Selected(源码)C#编程 WinForm...

    C#winform窗体事件穿透代码.txt

    代码已封装,仅一个方法,调用即可使想要的窗体或者控件变得不在触发事件,直接穿透到电脑桌面。适用于做屏保或者截屏或者一些小工具程序。

    C#WinForm窗体四周阴影效果

    在C# WinForm开发中,有时我们希望为窗体添加一些高级视觉效果,例如像现代操作系统中的窗口那样,带有四周的阴影。这个效果可以提升应用的用户体验,使其看起来更加专业和精致。本教程将详细讲解如何在WinForm取消...

    C#Winform窗体美化界面.rar

    在"C# WinForm窗体美化界面.rar"压缩包中,包含了一个名为"GDIPlusDemo"的示例项目,该项目展示了如何实现无边框窗体、窗体圆角以及自定义系统按钮控制器。 首先,让我们讨论如何创建一个无边框的WinForm窗体。在...

    C#编程 WinForm窗体开发 DropDownList(源码)

    C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList(源码)C#编程 WinForm窗体开发 DropDownList...

    C# winform窗体四个角变成圆角,美观窗体

    https://blog.csdn.net/qq_34280681/article/details/105428119

    C# Winform 窗体传值及接收返回值

    在C# Winform应用程序开发中,常常需要在不同的窗体之间传递数据,以便实现各功能模块之间的交互。这里我们将详细探讨两种主要的传值方法:通过构造函数传值和通过属性传值。 首先,我们来看**通过构造函数传值**的...

    C# WInForm窗体嵌入外部EXE程序.zip

    在C# WinForm应用开发中,...总之,C# WinForm窗体嵌入外部EXE程序涉及多方面的技术,包括进程管理、控件创建、消息传递和事件处理。通过这些技术,我们可以构建出功能丰富的桌面应用,为用户提供更加一体化的体验。

    C#编程 WinForm窗体开发 DynamicTaskStock(源码)

    C#编程 WinForm窗体开发 DynamicTaskStock(源码)C#编程 WinForm窗体开发 DynamicTaskStock(源码)C#编程 WinForm窗体开发 DynamicTaskStock(源码)C#编程 WinForm窗体开发 DynamicTaskStock(源码)C#编程 WinForm窗体...

    C# winform窗体间传值(使用委托或事件)

    C#winform窗体间传值,三种方法示例,注释详细。使用方法:使用vs2013打开编译运行即可; 工程中总共介绍了三种方法: ###方法1:通过保存对象的引用调用其方法实现对子窗体的控制; ###方法2:通过委托,在子窗体...

    c# WinForm 窗体之间传值的几种方式(小结)

    c# WinForm 窗体之间传值的几种方式小结 在WinForm开发中,窗体之间传值是一种常见的需求。今天,我们将介绍WinForm 窗体之间传值的几种方式,帮助开发者更好地解决这个问题。 方式一:使用公共静态变量传值 在这...

    C# winform窗体技巧实例

    本教程通过一系列实例,展示了如何利用C#的WinForm技术创建各种复杂而富有特色的窗体效果,包括QQ界面的模拟、漂浮窗体、无标题栏拖动窗体、闪烁窗体、全屏显示以及透明渐现效果等。 首先,"Ex08_25(拖放工作区拖动...

    C# WinForm窗体及其控件的自适应

    3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,首次记录窗体和其控件初始位置和大小,之后调用类的自适应方法,完成自适应。 4.Panel,DataGridView等控件同样适用。 应用代码如下: using System; ...

    C#winform窗体转盘抽奖

    总的来说,“C# WinForm窗体转盘抽奖”项目涵盖了C#编程语言的基础知识,包括对象、事件处理、图形绘制、音频控制等多个方面。通过实践这个项目,开发者不仅可以掌握WinForm应用的开发流程,还能提升自己在编程、UI...

    c# winform 窗体样式风格 多种漂亮好看的样式风格 下拉框选择

    在C# WinForm开发中,窗体样式和风格的定制是提升用户界面(UI)美观性和用户体验的关键要素。本文将深入探讨如何实现多种漂亮、好看的样式风格,并关注下拉框选择这一常见控件的美化方法。 首先,让我们了解...

    C#编程 WinForm窗体开发 ValidateDay(源码)

    C#编程 WinForm窗体开发 ValidateDay(源码)C#编程 WinForm窗体开发 ValidateDay(源码)C#编程 WinForm窗体开发 ValidateDay(源码)C#编程 WinForm窗体开发 ValidateDay(源码)C#编程 WinForm窗体开发 ValidateDay(源码)...

    C#编程 WinForm窗体开发 ChineseCode(源码)

    C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)C#编程 WinForm窗体开发 ChineseCode(源码)...

    C#编程 WinForm窗体开发 ByteConversion(源码)

    C#编程 WinForm窗体开发 ByteConversion(源码)C#编程 WinForm窗体开发 ByteConversion(源码)C#编程 WinForm窗体开发 ByteConversion(源码)C#编程 WinForm窗体开发 ByteConversion(源码)C#编程 WinForm窗体开发 ...

Global site tag (gtag.js) - Google Analytics