zoukankan      html  css  js  c++  java
  • 控件开发学习笔记(1)

    1. 选择基类

    • Control类,所有控件都直接或间接继承该类,提供了各类控件通用属性和方法,如唯一标志ID 属性、可见性Visible 等,灵活性最强
    • WebControl类,继承了Control 的所有属性,还增加了布局、可访问性、外观样式等特性;另外,对行为也扩充了好多属性。一般在基于Web 的系统中用得最多,扩展灵活性也很强。
    • CompositeControl类,一般用于将具有一定功能的多个控件集成为一个控件的情况。
    • 继承现有控件,如Label,Button,并在此基础上扩展或改变(通过override 重载其方法实现)其功能,满足业务需要。

    2. 控件呈现

    在WebControl 基类中,以Render 开头的呈现方法有如下几个:

    •  RenderControl(HtmlTextWriter writer)
      •  Render(HtmlTextWriter writer)
        •  RenderBeginTag(HtmlTextWriter writer)
        •  RenderContents(HtmlTextWriter output)
          •  RenderChildren(HtmlTextWriter writer)
        •  RenderEndTag(HtmlTextWriter writer)

    其中在RenderControl 方法内部会调用Render 方法,在Render 方法内部会依次调用RenderBeginTag, RenderContents 和RenderEndTag。

    而RenderContents调用RenderChildren方法。

    RenderControl 和Render 是Control 基类中的方法。一般在开发基本控件时,我们只需重写RenderContents 方法即可。

     1         /// <summary>1.初始化(对应OnInit方法)</summary>
     2         protected override void OnInit(EventArgs e)
     3         {
     4             base.OnInit(e);
     5         }
     6         /// <summary>2.加载控件状态(对应LoadControlState方法)</summary>
     7         protected override void LoadControlState(object savedState)
     8         {
     9             base.LoadControlState(savedState);
    10         }
    11         /// <summary>3.加载视图状态(对应LoadViewState方法)</summary>
    12         protected override void LoadViewState(object savedState)
    13         {
    14             base.LoadViewState(savedState);
    15         }
    16         /// <summary>4.加载回传数据(对应LoadPostData方法)</summary>
    17         public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
    18         {
    19             return false;
    20         }
    21         /// <summary>5.装载(对应OnLoad方法)</summary>
    22         protected override void OnLoad(EventArgs e)
    23         {
    24             base.OnLoad(e);
    25         }
    26         /// <summary>6.数据回传事件通知(对应RaisePostDataChangedEvent方法)</summary>
    27         public virtual void RaisePostDataChangedEvent()
    28         {
    29         }
    30         /// <summary>7.触发回发事件(对应RaisePostBackEvent方法)</summary>
    31         public virtual void RaisePostBackEvent(string eventArgument)
    32         {
    33         }
    34         /// <summary>8.预呈现(对应OnPreRender方法)</summary>
    35         protected override void OnPreRender(EventArgs e)
    36         {
    37             base.OnPreRender(e);
    38         }
    39         /// <summary>9.保存视图状态(对应SaveViewState方法)</summary>
    40         protected override object SaveViewState()
    41         {
    42             base.ChildControlsCreated = false;
    43             return base.SaveViewState();
    44         }
    45         /// <summary>10.呈现(对应RenderControl方法)</summary>
    46         public override void RenderControl(HtmlTextWriter writer)
    47         {
    48             base.RenderControl(writer);
    49         }
    50         /// <summary>11.呈现(对应Render方法)</summary>
    51         protected override void Render(HtmlTextWriter writer)
    52         {
    53             base.Render(writer);
    54         }
    55         /// <summary>12.呈现(对应RenderBeginTag方法)</summary>
    56         public override void RenderBeginTag(HtmlTextWriter writer)
    57         {
    58             base.RenderBeginTag(writer);
    59         }
    60         /// <summary>13.呈现(对应RenderContents方法)</summary>
    61         protected override void RenderContents(HtmlTextWriter writer)
    62         {
    63             base.RenderContents(writer);
    64         }
    65         /// <summary>14.呈现(对应RenderChildren方法)</summary>
    66         protected override void RenderChildren(HtmlTextWriter writer)
    67         {
    68             base.RenderChildren(writer);
    69         }
    70         /// <summary>15.呈现(对应RenderEndTag方法)</summary>
    71         public override void RenderEndTag(HtmlTextWriter writer)
    72         {
    73             base.RenderEndTag(writer);
    74         }
    75         /// <summary>16.卸载(对应OnUnload方法)</summary>
    76         protected override void OnUnload(EventArgs e)
    77         {
    78             base.OnUnload(e);
    79         }
    80         /// <summary>17.卸载(对应OnUnload方法)</summary>
    81         public override void Dispose()
    82         {
    83             base.Dispose();
    84         }
  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/zhuhc/p/2874350.html
Copyright © 2011-2022 走看看