下载首页 | 资讯中心 | 文章分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 绿色软件 | 汉化补丁 | |
文章搜索: 分类 关键字
您的位置:首页编程开发网络编程 → ASP.NET2.0服务器控件之类型化样式属性
ASP.NET2.0服务器控件之类型化样式属性
来源:天极yesky 作者: 加入时间:2006-10-27 访问次数:4 [  ]

 上一篇文章对控件样式属性的基本概念进行了介绍,同时,还通过示例说明了重写样式属性的方法。本文重点对类型化样式属性的创建方法进行讲解。

  实现类型化样式属性的方法

  继承自Style类的类称为类型化样式。Style类可以由控件开发人员来扩展,创建一个自定义类型化样式,它重写或者添加Style类的属性。服务器控件也可以把自定义类型化样式作为ControlStyle属性的类型。例如,Table控件的ControlStyle属性就是TableStyle类型,该类型是扩展的Style,添加了例如CellPadding、CellSpacing和GridLines属性等。在初步了解类型化样式属性的基本概念之后,下面列举了实现类型化样式属性的方法要点。

  (1)创建一个派生自System.Web.UI.WebControls.Style的类;

  (2)定义样式将为控件提供的属性。在Style的ViewState字典中保存该属性;

  (3)重写CopyFrom和MergeWith方法,从定义的属性中复制或者将定义的属性和一个给定样式的属性合并;

  (4)重写Reset方法,删除添加到ViewState中的属性;

  (5)重写AddAttributesToRender方法,产生HTML和CSS特性,作为控件呈现过程的一部分。

  实际上,创建类型化样式属性并不是一个简单的过程。为此,下面我们将通过典型应用示例来说明创建的具体方法,以便读者加深对于实现要点的理解。

  典型应用

  本节通过创建一个MyPanel控件以及相关联的类型化样式MyPanelStyle,来讲解如何实现并使用自定义类型化样式。就功能而言,MyPanel与ASP.NET 2.0内置的Panel控件是一致。开发人员可以通过把需要添加的控件嵌套在控件的标签中,向Controls集合中添加控件。在可视化设计器中,把所需添加的控件拖放到Panel的设计界面上,就可以把控件添加到Controls集合中。然而,MyPanel并不是从Panel类继承而来,而是自定义实现的结果,同时,该控件还提供了类型化样式属性MyPanelStyle,其中设置了3个样式属性:

  (1)BackImageUrl,用于指定背景图片的URL;

  (2)HorizontalAlign,用于指定所添加内容的水平对其方式;

  (3)Wrap,用于指定是否允许对所添加的内容换行。

  下面列举了示例效果图。

ASP.NET2.0服务器控件之类型化样式属性
图1

  如图1所示,图中显示了一个MyPanel控件,其中包括一行文字,文字的背景图像已经定义,并且文字处于居中位置。

  下面列举了实现自定义服务器控件的MyPanel.cs源代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebControlLibrary{
 [ ParseChildren(false), PersistChildren(true) ]
 [ToolboxData("<{0}:MyPanel runat=server></{0}:MyPanel>")]

 public class MyPanel : WebControl {
  // 定义构造函数
  public MyPanel() : base(HtmlTextWriterTag.Div) { }
  // 实现属性BackImageUrl
  [Bindable(true)] [Category("Appearance")]
  [DefaultValue("")]

  public virtual string BackImageUrl {
   get {
    if (ControlStyleCreated) {
     return ((MyPanelStyle)ControlStyle).BackImageUrl;
    }
    return String.Empty;
   }
   set {
     ((MyPanelStyle)ControlStyle).BackImageUrl = value;
   }
  }
  // 实现属性HorizontalAlign
  [Bindable(true)]
  [Category("Layout")]
  [DefaultValue("")]

  public virtual HorizontalAlign HorizontalAlign {
   get {
    if (ControlStyleCreated) {
     return ((MyPanelStyle)ControlStyle).HorizonalAlign;
    }
    return HorizontalAlign.NotSet;
   }
   set {
    ((MyPanelStyle)ControlStyle).HorizonalAlign = value;
   }
  }
  // 实现属性Wrap

  [Bindable(true)]
  [Category("Layout")]
  [DefaultValue("")]

  public virtual bool Wrap {
   get {
    if (ControlStyleCreated) {
     return ((MyPanelStyle)ControlStyle).Wrap;
    }
    return true;
   }
   set {
    ((MyPanelStyle)ControlStyle).Wrap = value;
   }
  }
  protected override Style CreateControlStyle() {
   return new MyPanelStyle(ViewState);
  }
 }
}

  在分析之前,为了帮助读者更好的阅读以上源代码,下面列举了MyPanel类图。
上一页 [1] [2] [3] 下一页
评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
 热点文章
·惊爆!《暗黑破坏神3》将对应全平台
·《荣誉勋章:太平洋之战》中文版上市
·MediaShow魅力四射快速制作音乐电子相册
·《花木兰》完美流程攻略
·轻松可爱 最新10大Q版网络游戏推荐
·2006年暑期新宣布免费网络游戏一览
·photoshop制作水晶球中的精灵
·NVIDIA发布Forceware 93.71 WHQL驱动
·经验分享 微软Word2007实用技巧两则
·国内新记录产生 1M super pi运算仅用9秒
 推荐文章
·微软高官爆料:欧盟对Vista哪些功能不安
·在Google Talk上与QQ、MSN好友聊天
·Word使用过程中的常见问题及其解决
·手把手教你内存终极变相“造假”大法
·NVIDIA联手海盗船 推出自动超频内存
·Windows Vista特殊功能介绍:语音识别
·公安机关检验软件样本 流氓软件制造者面临坐牢危..
·比英特尔UMPC还要小 移动PC新品推出
·性感暴力完美结合 御姐武戏X新画面
·盖茨访谈:我就是微软里的兼职员工
WinXP下载基地 版权所有 Copyright© 2006-2008 WWW.WinXpd.COM, All Rights Reserved. 页面维护: WinXP下载基地(WinXP基D)