在VS 2005使用SKIN外观文件实现程序换肤

还是和往常一样,写点教程,呵呵。

首先运行你的VS 2005,新建一个网站项目,然后就可以跟着开始为程序设计皮肤了。

本例子一共牵涉以下方面的内容:

1、建立WEB FORM文件;
2、建立SKIN外观文件;
3、建立数据库文件;

首先,在你的Default.aspx文件中拖放两个GRIDVIEW控件、一个BUTTON控件、两个链接标签,拖好后,如下图:
Skin01.gif

拖好后,Default.aspx文件源码如下:

 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Default"  %>
 2 None.gif
 3 None.gif <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 4 None.gif
 5 None.gif < html  xmlns ="http://www.w3.org/1999/xhtml"   >
 6 None.gif < head  runat ="server" >
 7 None.gif     < title > 无标题页 </ title >
 8 None.gif </ head >
 9 None.gif < body  style ="font-size: 12px;" >
10 None.gif     < form  id ="form1"  runat ="server" >
11 None.gif     < div >
12 None.gif         < asp:HyperLink  ID ="HyperLink1"  runat ="server"  NavigateUrl ="~/Default.aspx?Skin=Default" > 默认皮肤 </ asp:HyperLink >
13 None.gif         < asp:HyperLink  ID ="HyperLink2"  runat ="server"  NavigateUrl ="~/Default.aspx?Skin=Diy" > 个性皮肤 </ asp:HyperLink >< br  />
14 None.gif         < br  />
15 None.gif         < asp:GridView  ID ="GridView1"  runat ="server"  Height ="99px"  Width ="254px" >
16 None.gif         </ asp:GridView >
17 None.gif         < br  />
18 None.gif    
19 None.gif     </ div >
20 None.gif         < asp:Button  ID ="Button1"  runat ="server"  Text ="按钮"  Height ="40px"  Width ="109px"   />
21 None.gif         < br  />
22 None.gif         < br  />
23 None.gif         < asp:GridView  ID ="GridView2"  runat ="server"  Height ="91px"  SkinID ="gridviewSkin"  Width ="267px" >
24 None.gif         </ asp:GridView >
25 None.gif     </ form >
26 None.gif </ body >
27 None.gif </ html >


弄好后,在VS菜单上面点“网站”--“添加新项”,添加外观文件,文件名为Default.skin,开发工具会自动创建一个App_Themes的文件夹,关于这个文件夹的说明,请参考MSDN。

Default.skin文件内容如下:

 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif --
 2InBlock.gif//文档名称:Skin皮肤
 3InBlock.gif//撰写人:李锡远
 4InBlock.gif//日期:2006-12-01
 5InBlock.gif//支持网站:http://www.popmis.com
 6InBlock.gif//个人博客:http://lixyvip.cnblogs.com
 7ExpandedBlockEnd.gif-- %>
 8 None.gif < asp:GridView  runat ="server"  BackColor ="Green"   >
 9 None.gif    < AlternatingRowStyle  BackColor ="Blue"   />
10 None.gif </ asp:GridView >
11 None.gif
12 None.gif < asp:GridView  runat ="server"  SkinId ="gridviewSkin"  BackColor ="#C0FFC0"   >
13 None.gif    < AlternatingRowStyle  BackColor ="#C0C0FF"   />
14 None.gif </ asp:GridView >

注:这里说明一下,如果在一个Page页中使用了THEME,在SKIN中定义的时候,要注意:

<asp:GridView runat="server" BackColor="Green" >

<asp:GridView runat="server" SkinId="gridviewSkin" BackColor="Green" >
是有不同的意义的,一个加了SkinId,一个没有,两个都是对Page页中的GridView设置皮肤,但是,如果没有指定SKINID的定义,是针对Page页中的所有GridView控件,如果指定了SKINID的定义,是指Page页中的某一个GridView控件,这里需要注意一下。(所以,我在WEBFORM页中要拖入两个GridView,就是为了说明这个的)

然后,再建立一个皮肤Diy.skin文件,文件内容如下:

 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif --
 2InBlock.gif//文档名称:Skin皮肤
 3InBlock.gif//撰写人:李锡远
 4InBlock.gif//日期:2006-12-01
 5InBlock.gif//支持网站:http://www.popmis.com
 6InBlock.gif//个人博客:http://lixyvip.cnblogs.com
 7ExpandedBlockEnd.gif-- %>
 8 None.gif
 9 None.gif < asp:GridView  runat ="server"  BackColor ="#C04000"   >
10 None.gif    < AlternatingRowStyle  BackColor ="#FF8000"   />
11 None.gif </ asp:GridView >
12 None.gif
13 None.gif < asp:GridView  runat ="server"  SkinId ="gridviewSkin"  BackColor ="#E0E0E0"   >
14 None.gif    < AlternatingRowStyle  BackColor ="Gray"   />
15 None.gif </ asp:GridView >
16 None.gif < asp:Button  runat ="server"  BorderStyle ="Dotted"  BorderWidth ="1px"   />

这里,我除了对Page页中的GridView控件进行了定义,还对Button控件也进行了定义。

然后,在要使用的Default.aspx页面的头行<%@ page %>中,加入Theme="Default" 属性。

将标签链接设置如下:

标签名:默认皮肤 链接:Default.aspx?Skin=Default
标签名:个性皮肤 链接:Default.aspx?Skin=Diy

接下来,就是要绑定数据和获取用户请求的皮肤了,在Default.aspx.cs代码页面中代码如下:

 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Web;
 5 None.gif using  System.Web.Security;
 6 None.gif using  System.Web.UI;
 7 None.gif using  System.Web.UI.WebControls;
 8 None.gif using  System.Web.UI.WebControls.WebParts;
 9 None.gif using  System.Web.UI.HtmlControls;
10 None.gif
11 None.gif public  partial  class  _Default : System.Web.UI.Page 
12 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
13InBlock.gif    protected void Page_Load(object sender, EventArgs e)
14ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
15InBlock.gif        this.ShowData();
16ExpandedSubBlockEnd.gif    }

17InBlock.gif    private void ShowData()
18ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
19InBlock.gif        DoSql obDoSql = new DoSql();
20InBlock.gif        DataTable TData = obDoSql.ExecuteSqlRead("select * from SkinDb order by id desc");
21InBlock.gif        this.GridView1.DataSource = TData;
22InBlock.gif        this.GridView1.DataBind();
23InBlock.gif
24InBlock.gif        this.GridView2.DataSource = TData;
25InBlock.gif        this.GridView2.DataBind();
26ExpandedSubBlockEnd.gif    }

27InBlock.gif    void Page_PreInit(object sender, EventArgs e)
28ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
29InBlock.gif
30InBlock.gif        string ThemeName;
31InBlock.gif        ThemeName = Request.QueryString["Skin"];
32InBlock.gif        if (ThemeName != null)
33ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
34InBlock.gif            Page.Theme = ThemeName;
35ExpandedSubBlockEnd.gif        }

36ExpandedSubBlockEnd.gif    }

37InBlock.gif
38InBlock.gif
39InBlock.gif
40ExpandedBlockEnd.gif}

41 None.gif

以上代码作个说明:

 void Page_PreInit(object sender, EventArgs e) 是获取用户请求的页面皮肤事件。
DoSql obDoSql = new DoSql(); 是我临时写了一个链接数据库的类,这个大家应该都懂,就不详细说了,具体可以下载源码,参考源码链接在文章最下面。

test.mdb是临时建立的一个数据库(习惯了用数据库,呵呵~)

然后,你就可以运行了,访问一下你的Default.aspx页看看,是不是两个GridView控件的皮肤不一样啦,然后再点一下“个性皮肤”链接,看见了吗,皮肤就变了,按钮也变了。如图:

默认皮肤效果:
Skin02.gif
个性皮肤效果:
Skin03.gif

怎么样,很简单地实现了吧!如果是要换图片呢? 也是一样的,一通百通啦!

好了,我也得休息一下了,喝杯水去,不懂的可以加我QQ:17020415

为了方便大家参考,将源码打包,供大家下载:[下载]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值