快速业务通道

ASP.NET控件开发基础(6)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

上一篇讲了关于属性方面的一些东西 ,这次讲的是关于样式.

位于WebControls命名空间的style类为顶级样式类.大部分标准控件都拥有其样式属性.

1.下面为设置样式方法

(1)你可以直接设置控件样式

Button1.BackColor = System.Drawing.Color.Red;

(2)通过获取web控件的样式集合来设置

Button1.ControlStyle.BackColor = System.Drawing.Color.Red;

(3)通过设置样式类,利用WebControl类的ApplyStyle方法来复制非空样式,并改写现有样式

myStyle.BackColor = System.Drawing.Color.Red;
Button1.ApplyStyle(myStyle);

(4)一直定义样式表属性,不使用控件属性,与定义HTML样式相同.

style="background-color: red"

下面引出话题,为什么要使用样式?大家知道定义样式可以使用统一风格,定义好的样式,可以重复使用.再回来看上面设置样式方法.

2.了解WebControl.BackColor和Style.BackColor

(1)和(2)是差不多的.但(3)则不同,(3)的定义方法有通用性,你可以定义一种样式,然后利用控件的ApplyStyle方法来引用样式.给样式编程提供了方面

WebControl类定义了通用的样式.(1)和(2)使用的样式属性为

WebControl.BackColor

(3)则不同,使用的为

Style.BackColor

3.自定义样式属性

刚开始就讲了style类为通用的顶级样式类,但需求是会发生变化的. 好了,下面真正开始编码了.

下面以改写label控件为例子

(1)改写样式属性,让其默认背景为红色,相信大家一定看的懂

示例一

namespace CustomComponents
{
   [ToolboxData(@"<{0}:ImageLabel1
   BackColor=''Red''
   runat=''server''></{0}:ImageLabel1>")
   ]
   public class ImageLabel1 : Label
   {
     public override string Text
     {
       get { return ViewState["Text"] != null ? (string)ViewState["Text"] : base.ID; }
       set { ViewState["Text"] = value; }
     }

     public override System.Drawing.Color BackColor
     {
       get
       {
         return base.BackColor = System.Drawing.Color.Red;
       }
       set
       {
         base.BackColor = value;
       }
     }
   }
}

控件初始效果为下图

ASP.NET控件开发基础(6)

(2)为label新增一个背景图片的属性,重写了一下AddAttributesToRender方法,添加一个样式属性,AddAttributesToRender方法以前为大家讲过,这里不多讲了.

示例二

namespace CustomComponents
{
   public class ImageLabel2 : Label
   {
     [BrowsableAttribute(true)]
     [DescriptionAttribute("背景")]
     [CategoryAttribute("Appearance")]
     public virtual String ImageUrl
     {
       get { return ViewState["imageUrl"] != null ? (string)ViewState["imageUrl"] : ""; }
       set { ViewState["imageUrl"] = value; }
     }
     override protected void AddAttributesToRender(HtmlTextWriter writer)
     {
       writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundImage, ImageUrl);
       base.AddAttributesToRender(writer);
     }
   }
}

使用控件效果如下

ASP.NET控件开发基础(6)

(3)上面示例二中我们定义了背景样式,其实.net已经为我们把工作做好了

从style类派生了很多样式类,扩展了style类的属性,满足不同控件样式的需求.

WebControl类中有一个CreateControlStyle 方法,其返回为一个样式集合.其默认情况下实现如下

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号