首页 / 网页编程 / ASP.NET / ASP.NET 2.0服务器控件开发之控件样式
ASP.NET 2.0服务器控件开发之控件样式2007-05-11 天极 金属边缘随着.NET技术的不断发展和成熟,服务器控件越来越受到广大开发人员的喜爱。同时,服务器控件的发展也呈现出一些趋势,例如,功能越来越强大,很多功能逐渐从服务器端转移到客户端。另外,服务器控件也越来越美观。这可能与Windows操作系统越来越讲求功能与外观统一的发展思路有关。本文及其随后的几篇文章将重点介绍如何为服务器控件实现漂亮的外观。实际上,服务器控件的外观主要由样式属性决定。本文重点对实现控件样式的基本知识进行概括性讲解。服务器控件样式简介对于普通应用开发人员而言,只需要知道服务器控件具有哪些样式属性,并了解每一个样式属性可能为控件外观带来的影响即可。例如,如果需要修改页面背景颜色,则需要修改样式属性BackgroundColor值;如果需要设置表格对象外观,那么可能需要设置BorderColor、BorderWidth等样式属性。然而,对于一名控件开发人员而言,他们不仅需要掌握应用开发人员所掌握的相关知识,而且还必须了解构建控件样式属性的创建方法。通常,具有样式属性的服务器控件均继承自System.Web.UI.WebControl基类。这样,控件类可自动继承基类中的多个样式属性。这些样式属性包括获取或者设置控件背景颜色的BackColor、获取或者设置控件前景颜色的ForeColor、获取或者设置控件边框颜色的BorderColor、获取或者设置控件边框样式的BorderStyle等等。如果控件类从WebControl基类继承,那么这些样式属性可自动得到继承,并且允许开发人员根据具体情况,对这些样式属性进行重写。另外,如果控件类继承自其他现有控件类,例如 GridView,那么自定义控件将自动继承GridView基类的样式属性,如设置交替数据行样式的AlternatingRowStyle、设置正在编辑的数据行的样式EditRowStyle等等。很显然,这些继承自已有服务器控件的样式属性并非此处要讨论的重点。然而,读者应了解样式属性允许从基类继承并无需修改即可直接使用的。下面继续讨论WebControl类中的样式属性。WebControl类的样式均封装在ControlStyle属性中。该属性值是Style数据类型。为了更好的了解ControlStyle,下面列举了ControlStyle属性的定义代码。private Style _controlStyle;
//定义ControlStyle属性
public Style ControlStyle{
get {
if(_controlStyle == null) {
_controlStyle = CreateControlStyle();
if(IsTrackingViewState) {
((IStateManager)_controlStyle).TrackViewState();
}
}
}
}
//定义CreateControlStyle方法
protected virtual Style CreateControlStyle(){ return new Style(ViewState);}如上代码所示,ControlStyle是一个只读属性,其数据类型为Style。当第一次访问该属性的时候被创建,其过程为:首先,判断_controlStyle是否为空,如果为空,则调用CreateControlStyle方法来创建_controlStyle对象,即一个Style的实例。然后,执行视图状态跟踪任务,其具体过程由Style类所提供的TrackViewState方法来完成。在初步了解ControlStyle属性之后,接着我们应了解与该属性密切相关的Style类。Style类用于表示服务器控件的样式,其包括以下几个属性:(1)BackColor,获取或者设置Web服务器控件的背景色;(2)BorderColor,获取或者设置控件的边框颜色;(3)BorderStyle,获取或者设置控件的边框样式;(4)BorderWidth,获取或者设置控件的边框宽度;(5)CssClass,获取或者设置控件在客户端呈现的级联样式表类;(6)Font,获取与控件关联的字体属性;(7)ForeColor,获取或者设置控件的前景颜色;(8)Height,获取或者设置控件的高度;(9)IsEmpty,获取一个值,该值指示是否已经在ViewState中定义任何样式元素;(10)IsTrackingViewState,返回一个值,该值指示是否正在跟踪其视图状态的更改。(11)RegisteredCssClass,获取已向控件注册的级联样式表类;(11)ViewState,获取保存样式元素的视图状态。