WEB状态条控件

<转自炳哥的BLOG>  

近段时间为了工作的需要学习了一下写自定义控件,呵呵!以前没写过,近段时间才开始研究的,昨天写了一个WEB状态条控件,
可以设置进度条的百分比,也可以设置它的总数与当前的数量来自动计算百分比,可以设置颜色显示或图片显示(当没有设置图片
的时候就会自动用颜色来显示),状态条的宽度和高度可以自由设定,还是第一次写控件,希望大家多多指教.好了不多说了,还是把
代码贴出来供大家参考吧!有不同想法的希望大家能提出来交流一下!

先看看运行效果:
           

第一步:
          新建一个类文件Guage.cs
          代码如下:
      

  1using System;
  2using System.Drawing;
  3using System.Web;
  4using System.Web.UI;
  5using System.Web.UI.WebControls;
  6using System.ComponentModel;
  7
  8namespace ZYT.Web.UI
  9{
 10    /// <summary>
 11    /// 进度条WEB控件

 12
 13    [DefaultProperty("Text"),
 14    ToolboxData("<{0}:Guage runat=server></{0}:Guage>")]
 15    public class Guage : System.Web.UI.WebControls.WebControl
 16    {
 17        变量
 47
 48        属性
121
122        构造函数
136
137        取得进度条百分比
161
162        /// <summary>
163        /// 进度条输出参数
164        /// </summary>
165        /// <param name="output"> 进度条 </param>

166        protected override void Render(HtmlTextWriter output)
167        {
168            if (Width.Type != UnitType.Pixel)
169            {
170                throw new ArgumentException("宽度必须为象素");
171            }

172
173            int intWidth = (int)Width.Value;//控件宽度
174
175            if (intPercentage == 0)
176            {
177                //进度条百分比
178                intPercentage = GetPercentage(intMaxNum, intCurNum);
179            }

180
181            if (BorderColor != Color.Empty)//进度条加边框
182            {
183                output.Write("<table border='0' cellspacing='0' cellpadding='1' bgColor='" +
184                ColorTranslator.ToHtml(BorderColor) + "'><tr><td>");
185            }

186            if (BarImageUrl == "")
187            {
188                output.Write("<table border='0' cellspacing='0' cellpadding='0' height='" + Height + "' bgColor='" + ColorTranslator.ToHtml(BackColor) + "'><tr>");
189                int intCellWidth = intWidth / intCellCount;
190                int intCurPercentage = 0;
191                int intPercentageStep = PercentageStep;
192                string strCellColor;
193                string strCellValue = "";
194
195                if (Page.Request.Browser.Browser.ToUpper() == "NETSCAPE")
196                {
197                    if (FillImageUrl != "")
198                    {
199                        strCellValue = "<img src='" + FillImageUrl + "' border='0' width='" + intCellWidth + "'>";
200                    }

201                    else
202                    {
203                        strCellValue = " ";
204                    }

205                }

206                for (int i = 0; i < intCellCount; i++, intCurPercentage += intPercentageStep)
207                {
208                    if (intCurPercentage < intPercentage)
209                    {
210                        strCellColor = " bgColor='" + ColorTranslator.ToHtml(ForeColor) + "'";
211                    }

212                    else
213                    {
214                        strCellColor = "";
215                    }

216
217                    if (i == 0)
218                    {
219                        output.Write("<td height='" + Height + "' width='" + intCellWidth + "'" + strCellColor + ">" + strCellValue + "</td>");
220                    }

221                    else
222                    {
223                        output.Write("<td width='" + intCellWidth + "'" + strCellColor + ">" + strCellValue + "</td>");
224                    }

225                }

226                output.Write("</tr></table>");
227            }

228            else
229            {
230                int intImageWidth = (int)((intPercentage / 100.0* intWidth);
231
232                output.Write("<table border='0' cellpadding='0' cellSpacing='0' bgColor='" + ColorTranslator.ToHtml(BackColor) + "'><tr><td width='" + intWidth + "'>");
233                output.Write("<img src='" + BarImageUrl + "' width='" + intImageWidth + "' height='" + Height + "'>");
234                output.Write("</td></tr></table>");
235            }

236
237            if (BorderColor != Color.Empty)
238            {
239                output.Write("</td></tr></table>");
240            }

241        }

242
243    }

244}

第二步:在WEB项目下添加一个WEB文件:GuageDemo.aspx
代码如下:
     
 1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="guageDemo.aspx.cs" Inherits="guageDemo" %>
 2<%@ Register Assembly="ZYT.Web.UI" Namespace="ZYT.Web.UI" TagPrefix="ZYTControl" %>
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>无标题页</title>
 8</head>
 9<body>
10    <form id="form1" runat="server">
11    <div>
12    <ZYTControl:Guage ID="guage1" runat="server" CurNum="34" MaxNum="1000" Height="25px" Width="300px" PercentageStep="2" BarImageUrl="Guage/Images/3.jpg" FillImageUrl="Guage/Images/1.jpg" ImageGeneratorUrl="" />
13    </div>
14    </form>
15</body>
16</html>
17
posted @ 2007-04-06 22:26  赖文华.NET  阅读(338)  评论(0编辑  收藏  举报