asp.net控件开发技巧(2)关闭基类不必要的功能


 1.关闭容器

  Control类有Controls集合属性,即继承Control类的控件都是一个容器控件,asp.net控件内置的有PlaceHolder控件,其只继承自Control类,什么也没做。但所有控件都是继承自Control类的。如一个label控件,照样可以当容器使用.

label1.Controls.add(control)

  有些控件则不需要这个功能,如Literal控件,只输出纯文字,不允许添加子控件

 

  很简单,重写CreateControlCollection方法,返回EmptyControlCollection空集合

  protected override ControlCollection CreateControlCollection()
  {
    return new EmptyControlCollection(this);
  }

  2.禁用属性

  如SqlDataSourceControl控件,其继承自DataSourceControl,DataSourceControl类则继承自Control类,DataSourceControl 不需要呈现东西,自然不需要样式,所以像SkinID,EnableTheming等属性则不需要使用。同时也可以用new关键字和一些元数据禁用掉像WebControl类的一些公共属性。有时候你确实不需要这些东西,或者是将这些属性给子标签用也可以。

    /**//// <exclude/>
    /// <excludetoc/>
    [Bindable(false), Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
    new public System.Drawing.Color BorderColor
    {
      get
      {
        return new System.Drawing.Color();
      }
    }

  总结:有时候继承下来的并不是你所需要的,所以灵活的重写基类的方法和属性是非常有必要的,而且有时候还必须这么做



相关阅读:
asp.net 表单验证新思路
php set_time_limit(0) 设置程序执行时间的函数
JavaScript搜索网页表格
Javascript 获取LI里的内容
SQL语句练习实例之四 找出促销活动中销售额最高的职员
dedecms 在内容模板里调用栏目内容即{dede:field.content/}
如何实现给定日期的若干天以后的日期
Linux系统下编译安装支持NTFS的内核模块
IE6下padding的一个影响布局的问题
javascript实现的文字加密解密
JQery jstree 大数据量问题解决方法
SQL Server 2000 作数据库服务器的优点
php imagecreatetruecolor 创建高清和透明图片代码小结
巧用ora2html收集Oracle数据库信息
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4