• ASP.NET编程之事件Events


         程序运行大致有两种:一种是线性的;一种是事件驱动的。线性的是指程序从步骤1,到步骤2,到步骤3,一直延续,直到最后一个步骤结束。与线性不同的是,实现驱动编程时对正在发生的事情一种反应;例如按键被按下了,更一般的是,事件一般都由用户的行为产生的,不过有些事件也能被系统引起。

          ASP.NET有上千种事件,应用程序有事件,会话有事件,页面和大部分的服务器控件也能激起事件。所有的ASP.NET事件是在服务器端被处理的,一些事件是立即被投递到服务器端,有一些事件被保留知道下次页面被投递会服务器。由此,我们可以看出ASP.NET与传统的客户端应用程序的不同,传统的客户端程序,事件的激发和处理都在客户端,而在ASP.NET中事件一般是在客户端激发的都是在服务器端被处理。

    事件参数(Events Arguments)

          事件是用delegate进行实现的。一个delegate是一个指定处理方的方法(method)描述的封装。

         按照传统,所有的ASP.NET处理器需要两个参数,没有返回值。第一个参数代表着激发事件的对象,一般它被称之为sender(尽管它有可能不需要);第二个参数称之为事件参数,包含事件的特殊信息,对于大多数参数,这种事件参数是一种EventArgs类型。因此一般的事件原型如下:     

          private void EventName (object sender, EventArgs e)

    应用程序和会话事件(Application and Session Events)

         应用程序事件:当一个程序启动时会激发Application_Start Event,这时候是初始化应用程序资源的最佳时期;而当程序结束的时候会激发Application_End Event,这时候需要关闭系统资源等善后工作。

         会话事件:与应用程序相似,一个会话以从应用程序发出第一个页面请求为开始,以应用程序关闭会话或会话超时为结束。当会话开始时会激发一个Session_Start Event,同样的会话结束时会激发Session_End Event

    页面和控件事件(Page and Control Events):

         页面(page)和控件(controls)都带有从Control class继承过来的事件(Event)。一些常见的页面和控件事件:

    Event name

    Description

    DataBinding

    Occurs when the control binds to a data source

    Disposed

    Occurs when the control is released from memory

    Error

    For the page only; occurs when an unhandled exception is thrown

    Init

    Occurs when the control is initialized

    Load

    Occurs when the control is loaded to the Page object

    PreRender

    Occurs when the control is about to be rendered

    Unload

    Occurs when the control is unloaded from memory

    回发事件 VS 非回发事件 (Postback Versus Non-Postback Events:

          回发事件(Postback Events)是指时间激发后要立即被投递至服务器端,一般是点击型事件,如Button.Click;与之对应的是许多事件不需要立即被投递到服务器端,例如Text.TextChanged事件,这些事件被缓存后直到下次投递出现的时候一起被送至服务器端。常见的回发式控件和非回发式控件:

    Postback

    Non-postback

    Button

    BulletedList

    Calendar

    CheckBox

    DataGrid

    CheckBoxList

    DataList

    DropDownList

    FileUpload

    ListBox

    GridView

    RadioButtonList

    ImageButton

    RadioButton

    ImageMap

    TextBox

    LinkButton


    Menu


    Repeater


    IsPostBack属性:

         页面对象提供了IsPostBack属性,它是一个只读的属性值,代表着页面是被初次加载还是为了响应客户端回发事件而被重新加载的。有许多昂贵的操作只需在初次加载时被执行,如果是重新加载的话这些操作无需再次执行。例如:

    protected void Page_Load(Object sender, EventArgs e)
        {
           if (! IsPostBack)
           {
              //  Do the expensive operations only the
              //  first time the page is loaded.
           }
        }


    VS2005中的事件:

         VS2005 IDE自动处理需要实现事件的大部分操作。当你创建一个web 应用程序时,VS2005自动包含了代码嗅探器去处理页面加载事件:

    Page_Load

    Page_AbortTransaction

    Page_CommitTransaction

    Page_DataBinding

    Page_Disposed

    Page_Error

    Page_Init

    Page_InitComplete

    Page_Load

    Page_LoadComplete

    Page_PreInit

    Page_PreLoad

    Page_PreRender

    Page_PreRenderComplete

    Page_SaveStateComplete

    Page_Unload

    多控件对应于一个事件处理器:(Multiple Controls to One Event Handler)

         一个事件处理器能够处理来自于不同控件的事件。例如以下代码:

    private void BtnClick(object sender, System.EventArgs e)
        {
           Button b = sender as Button;
           String buttonID = b.ID;
           switch (buttonID)
           {
              case "btnDoThis":
                 //  code to do this
              case "btnDoThat":
                 //  code to do that
           }
           //  code to do stuff common to all the buttons
        }




  • 相关阅读:
    骑士飞行棋 C#代码详解
    C#中的static静态变量的用法
    Break和Continue的一些注意事项
    枚举类型
    html 01-认识Web和Web标准
    css 17-CSS3的常见边框汇总
    css 16-浏览器的兼容性问题
    css 15-Sass入门
    css 14-CSS3属性详解:Web字体
    css 13-CSS3属性:Flex布局图文详解
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207146.html
Copyright © 2020-2023  润新知