冠逹小站

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  26 随笔 :: 0 文章 :: 5 评论

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

   当 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.的前后分别处理一次,如下

protected override void OnLoad(EventArgs e)   
{
	textBox1.Text += "OnLoad1" + "\r\n";   
	base.OnLoad(e);   
	textBox1.Text += "OnLoad2" + "\r\n";   
}

 

OnClientSizeChanged1
OnClientSizeChanged2
OnClientSizeChanged1
OnClientSizeChanged2

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

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

//
OnLayout1
OnLayout2
OnActivated1
OnActivated2
OnShown1
OnShown2
OnPain1
OnPain2

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

 

三、以下是代码源

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /*
         * 输出窗体事件的执行次序
         */

        protected override void OnActivated(EventArgs e)
        {
            textBox1.Text += "OnActivated1" + "\r\n";
            base.OnActivated(e);
            textBox1.Text += "OnActivated2" + "\r\n";
        }

        protected override void OnClientSizeChanged(EventArgs e)
        {
            textBox1.Text += "OnClientSizeChanged1" + "\r\n";
            base.OnClientSizeChanged(e);
            textBox1.Text += "OnClientSizeChanged2" + "\r\n";
        }

        protected override void OnCreateControl()
        {
            textBox1.Text += "OnCreateControl1" + "\r\n";
            base.OnCreateControl();
            textBox1.Text += "OnCreateControl2" + "\r\n";
        }

        protected override void OnDeactivate(EventArgs e)
        {
            textBox1.Text += "OnDeactivate1" + "\r\n";
            base.OnDeactivate(e);
            textBox1.Text += "OnDeactivate2" + "\r\n";
        }

        protected override void OnHandleCreated(EventArgs e)
        {
            textBox1.Text += "OnHanleCreated1" + "\r\n";
            base.OnHandleCreated(e);
            textBox1.Text += "OnHanleCreated2" + "\r\n";
        }

        protected override void OnHandleDestroyed(EventArgs e)
        {
            textBox1.Text += "OnHanleDestoryed1" + "\r\n";
            base.OnHandleDestroyed(e);
            textBox1.Text += "OnHanleDestoryed2" + "\r\n";
        }

        protected override void OnInvalidated(InvalidateEventArgs e)
        {
            textBox1.Text += "OnInvalidated1" + "\r\n";
            base.OnInvalidated(e);
            textBox1.Text += "OnInvalidated2" + "\r\n";
        }

        protected override void OnLayout(LayoutEventArgs levent)
        {
            textBox1.Text += "OnLayout1" + "\r\n";
            base.OnLayout(levent);
            textBox1.Text += "OnLayout2" + "\r\n";
        }

        protected override void OnLoad(EventArgs e)
        {
            textBox1.Text += "OnLoad1" + "\r\n";
            base.OnLoad(e);
            textBox1.Text += "OnLoad2" + "\r\n";
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            textBox1.Text += "OnPain1" + "\r\n";
            base.OnPaint(e);
            textBox1.Text += "OnPain2" + "\r\n";
        }

        protected override void OnShown(EventArgs e)
        {
            textBox1.Text += "OnShown1" + "\r\n";
            base.OnShown(e);
            textBox1.Text += "OnShown2" + "\r\n";
        }
    }
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/neok/archive/2009/09/29/4616265.aspx

posted on 2010-12-01 00:24  林冠逹  阅读(8046)  评论(0编辑  收藏