WinForm、WPF、ASP.NET窗口生命周期

WinForm、WPF、ASP.NET窗口生命周期

2023年7月19日发(作者:)

WinForm、WPF、窗⼝⽣命周期做了这么久桌⾯应⽤程序开发,对窗⼝的⽣命周期还没有⼀个清晰的了解。那我们就对*WinForm、WPF和*应⽤程序中窗⼝的⽣命周期做⼀个测试,看⼀下在窗⼝的创建和消亡的过程中,各个事件的执⾏顺序。WinForm⾸先,我们来看⼀下WinForm窗⼝。 在窗⼝的构造函数中注册⼀下各个事件。Created += Form1_HandleCreated;gContextChanged +=Form1_BindingContextChanged; += Form1_Load;eChanged += Form1_VisibleChanged;ted += Form1_Activated;vate += Form1_Deactivate; += Form1_Shown;osing += Form1_FormClosing; osed += Form1_FormClosed; vate += Form1_Deactivate;在事件中执⾏函数,将事件名称和执⾏顺序输出。private void Output(string func){ ine($"{func}: {i++}");}我们可以看到,输出结果是: > HandleCreated: 1 BindingContextChanged: 2 Load: 3 VisibleChanged: 4 Activated: 5 Shown: 6Deactivate: 7 Activated: 8 Deactivate: 9 Activated: 10 FormClosing: 11 FormClosed: 12 Deactivate: 13 当窗⼝失去焦点时,Deactivate事件被调⽤;获得焦点时,Activated事件被调⽤。 ———-WPF接下来,看⼀下WPF窗⼝。 同样,我们注册⼀下各个事件。lized += MainWindow_Initialized;ted += MainWindow_Activated; += MainWindow_Loaded;tRendered += MainWindow_ContentRendered;g += MainWindow_Closing;ed += MainWindow_Unloaded; += MainWindow_Closed;在各个事件中执⾏函数,输出事件名称和执⾏顺序。

输出结果如下:Initialized: 1

Activated: 2

Loaded: 3

ContentRendered: 4

Activated: 5

Closing: 6

Closed: 7值得注意的是:Initialized事件必须在构造函数执⾏InitializeComponent();之前注册,否则不会执⾏。

最后是窗⼝。PreInit==>Init==>InitComplete==>PreLoad==>Load==>Validation==>LoadComplete==>PreRender==>SaveStateComplete==>Rendering==>UnLoad

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689720465a280869.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信