(一). 概述
通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
1. 核心控件实现代码文件ComputeControl.cs
  1using System;
  2using System.Collections.Generic;
  3using System.Text;
  4using System.Web;
  5using System.Web.UI;
  6using System.Web.UI.WebControls;
  7
  8namespace KingControls
  9{
 10    public class ComputeControl : System.Web.UI.WebControls.CompositeControl
 11    {
 12        //操作数
 13        private TextBox tb1;
 14        private TextBox tb2;
 15
 16        //显示结果
 17        private Label lb;
 18
 19        //操作(+-*/)
 20        private Button bt1;
 21        private Button bt2;
 22        private Button bt3;
 23        private Button bt4;
 24
 25        protected override void CreateChildControls()
 26        {
 27            tb1 = new TextBox();
 28            tb1.ID = "TextBox1";
 29            this.Controls.Add( tb1 );
 30            
 31            tb2 = new TextBox();
 32            tb2.ID = "TextBox2";
 33            this.Controls.Add(tb2);
 34            
 35            lb = new Label();
 36            lb.ID = "Label1";
 37            lb.BackColor = System.Drawing.Color.YellowGreen;
 38            lb.Text = "Result: ";
 39            this.Controls.Add( lb );
 40            
 41            bt1 = new Button();
 42            bt1.ID = "Button1";
 43            bt1.Text = "+";
 44            bt1.CommandArgument = "+";
 45            bt1.Click += new EventHandler(bt_Click);
 46            this.Controls.Add( bt1 );
 47            bt2 = new Button();
 48            bt2.ID = "Button2";
 49            bt2.Text = "-";
 50            bt2.CommandArgument = "-";
 51            bt2.Click += new EventHandler(bt_Click);
 52            this.Controls.Add(bt2);
 53            bt3 = new Button();
 54            bt3.ID = "Button3";
 55            bt3.Text = "*";
 56            bt3.CommandArgument = "*";
 57            bt3.Click += new EventHandler(bt_Click);
 58            this.Controls.Add(bt3);
 59            bt4 = new Button();
 60            bt4.ID = "Button4";
 61            bt4.Text = "/";
 62            bt4.CommandArgument = "/";
 63            bt4.Click += new EventHandler(bt_Click);
 64            this.Controls.Add(bt4);            
 65        }
 66
 67        void bt_Click(object sender, EventArgs e)
 68        {
 69            try
 70            {
 71                if ("Result: " != lb.Text)
 72                {
 73                    lb.Text = lb.Text + ", ";
 74                }
 75                switch( ((Button)sender).CommandArgument  )
 76                {
 77                    case "+": lb.Text = lb.Text + Convert.ToString(Convert.ToInt32(this.tb1.Text) + Convert.ToInt32(this.tb2.Text)); break;
 78                    case "-": lb.Text = lb.Text + Convert.ToString(Convert.ToInt32(this.tb1.Text) - Convert.ToInt32(this.tb2.Text)); break;
 79                    case "*": lb.Text = lb.Text + Convert.ToString(Convert.ToInt32(this.tb1.Text) * Convert.ToInt32(this.tb2.Text)); break;
 80                    case "/": lb.Text = lb.Text + Convert.ToString(Convert.ToInt32(this.tb1.Text) / Convert.ToInt32(this.tb2.Text)); break;
 81                }
 82            }
 83            catch
 84            {
 85                lb.Text = "It's is not right format, please input again.";
 86            }            
 87        }
 88
 89        protected override void RenderContents(HtmlTextWriter output)
 90        {
 91            output.Write("a");
 92
 93        }
 94
 95        protected override void Render(HtmlTextWriter writer)
 96        {
 97            writer.RenderBeginTag(HtmlTextWriterTag.Table);
 98            
 99            //Operating item 1
100            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
101            writer.RenderBeginTag(HtmlTextWriterTag.Td);
102            tb1.RenderControl(writer);
103            writer.RenderEndTag();
104            writer.RenderEndTag();
105            
106            //<br>
107            writer.WriteBreak();
108
109            //Operating symbol
110            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
111            writer.RenderBeginTag(HtmlTextWriterTag.Td);
112            writer.WriteEncodedText(" + - * / ");
113            writer.RenderEndTag();
114            writer.RenderEndTag();
115
116            //Operating item2
117            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
118            writer.RenderBeginTag(HtmlTextWriterTag.Td);
119            tb2.RenderControl(writer);
120            writer.RenderEndTag();
121            writer.RenderEndTag();
122
123            //Operating symbol
124            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
125            writer.RenderBeginTag(HtmlTextWriterTag.Td);
126            writer.WriteEncodedText(" EQUAL ");
127            writer.RenderEndTag();
128            writer.RenderEndTag();
129
130            //The relust label
131            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
132            writer.RenderBeginTag(HtmlTextWriterTag.Td);
133            lb.RenderControl(writer);
134            writer.RenderEndTag();
135            writer.RenderEndTag();
136
137            //Button1
138            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
139            writer.RenderBeginTag(HtmlTextWriterTag.Nobr);
140            writer.RenderBeginTag(HtmlTextWriterTag.Td);
141            bt1.RenderControl(writer);                        
142            bt2.RenderControl(writer);            
143            bt3.RenderControl(writer);            
144            bt4.RenderControl(writer);
145            writer.RenderEndTag();
146            writer.RenderEndTag();
147
148            writer.RenderEndTag();
149        }
150    }
151}
152

2. 前台页面代码 UsingCompositeControl.aspx (使用方法)

1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UsingCompositeControl.aspx.cs" Inherits="UsingCompositeControl" %>
2<%@ Register Assembly="KingControls" Namespace="KingControls" TagPrefix="KSP" %>
3… …
4<KSP:ComputeControl ID="compute1" runat="server" />
5… …
6
(三). 示例代码下载
        http://files.cnblogs.com/ChengKing/KingControls.rar

转载于:https://www.cnblogs.com/MVP33650/archive/2007/04/27/730329.html

Asp.net 2.0 制作复合控件示例(二)[示例代码下载]相关推荐

  1. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

    学习整理了一下 (一).功能 用HttpHandler实现图片验证码 (二).代码如下 1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHan ...

  2. Scott Mitchell 的ASP.NET 2.0数据教程之二十一:: 实现开放式并发

    在ASP.NET 2.0中操作数据:实现开放式并发 下载本教程中的编码例子 | 下载本教程的PDF版 导言 对于那些仅仅允许用户查看数据,或者仅有一个用户可以修改数据的web应用软件,不存在多用户并发 ...

  3. Scott Mitchell 的ASP.NET 2.0数据教程之二十四:: 分页和排序报表数据

    下载代码示例 | 下载PDF格式英文教程 导言 分页和排序是在WEB应用程序中展现数据常见的功能.比如,当我们在一个网上书店搜索ASP.NET书籍的时候,可能有几百本相关书籍,但是我们只希望每页显示1 ...

  4. 【彼岸美图】二十行代码下载上千张高清美图壁纸【python爬虫】

    小白也能看懂的python爬虫,从零开始爬彼岸图网壁纸美图 你是否有过以下烦恼: 想找壁纸却找不到 找到的壁纸清晰度都不高? 下载图片太麻烦? 现在,你将可以用简简单单二十行代码解决这一切烦恼,还不赶 ...

  5. asp.net ajax1.0基础回顾(二):经典模式

    asp.net ajax提供经典的异步请求/响应模式的客户端JS对象Sys.Net.WebRequest,本文将只对Sys.Net.WebRequest的进行介绍.若想深入了解相关的其它JS对象,可以 ...

  6. ASP.NET 2.0数据教程之二十六::排序自定义分页数据

    导言 和默认翻页方式相比,自定义分页能提高几个数量级的效率.当我们的需要对大量数据分页的时候就需要考虑自定义分页,然而实现自定义分页相比默认分页需要做更多工作.对于排序自定义分页数据也是这样,在本教程 ...

  7. ASP.NET 2.0数据教程之二十四:: 分页和排序报表数据

    导言 分页和排序是在WEB应用程序中展现数据常见的功能.比如,当我们在一个网上书店搜索ASP.NET书籍的时候,可能有几百本相关书籍,但是我们只希望每页显示10条有效记录.而且,我们还希望结果能根据标 ...

  8. ASP.NET 2.0 AJAX中Webservice调用方法示例

    ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例.笔者安装的ASP.NET 2.0 AJAX 版本为AJAX November CTP. ...

  9. (转) ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站(二)

    Web部件目录 我们已经见过了如何在 WebPartZones 控件中事先放入Web部件.你还可以用另外一种方法完成这个功能,那就是允许用户在运行时添加新的Web部件.通过使用 CatalogZone ...

最新文章

  1. 从客户端(Content=EM STRONG U 这是测试这...)中检测到有潜在危险的Request.Form 值。...
  2. 指纹图谱相似度评价软件_基于指纹图谱和网络药理学对当归四逆汤中桂枝的Qmarker预测分析...
  3. 把转变为json_如何使用7行JSON将您的网站转变为移动应用程序
  4. 第一行代码阅读笔记---基本知识
  5. MongoDB 教程番外篇之添加用户及设置用户权限 ( Rockmongo登陆设置 )
  6. java new file会创建文件吗_Java高级——文件与I/O流
  7. Android异常总结---Test run failed:Unable to find instrumentation target package
  8. 【BERT】源码分析(PART II)
  9. 解决异常:公共语言运行时检测到无效的程序
  10. GaussDB Hash表分布列选择原则及数据倾斜检测
  11. 静态VLAN及配置实例详解
  12. java调用cmd且隐藏窗口,最后关闭窗口
  13. Cisco ASA 基础
  14. 永恒之蓝--Windows7
  15. matlab阿伦尼乌斯方程,马铃薯酶促褐变机理研究
  16. 解决MacBookPro git push提示You hasn‘t joined this enterprise
  17. HTML 使用table标签制作个人简历
  18. 爬取自如网站杭州市的租房信息
  19. 马尔萨斯 ( Malthus)人口指数增长模型Logistic 模型
  20. [Web]如何利用Boostrap框架搭建一个还可以的静态网站(五_子页_脱发指南)

热门文章

  1. xshell添加脚本
  2. 关于虚函数的应用(10个例子)
  3. 基于Laravel开发博客应用系列 —— 构建博客后台管理系统
  4. 浅析CSS——元素重叠及position定位的z-index顺序
  5. 谈javascript变量声明
  6. Docker Day 4 Docker基础之Dockerfile语法
  7. 数据结构与算法基础-试题
  8. 第四届国际软件自由日在西安邮电学院的发言
  9. ROSA 2012 Enterprise Linux Server 发布
  10. Azure负载均衡器Standard Load Balancer介绍