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

asp.net|控件|示例|下载

(一). 概述
   通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
   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://www.cnblogs.com/Files/ChengKing/KingControls.rar

 

时间: 2024-12-10 05:27:10

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

ASP.NET 2.0数据教程之二:创建一个业务逻辑层

本系列文章导航 ASP.NET 2.0数据教程之一:创建一个数据访问层 ASP.NET 2.0数据教程之二:创建一个业务逻辑层 ASP.NET 2.0数据教程之三:母板页和站点导航 ASP.NET 2.0数据教程之四:使用ObjectDataSource展现数据 ASP.NET 2.0数据教程之五:声明参数 ASP.NET 2.0数据教程之六:编程设置ObjectDataSource的参数值 ASP.NET 2.0数据教程之七:使用DropDownList过滤的主/从报表 ASP.NET 2.0

Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)

asp.net|控件|示例|下载 (一). 概述         示例制作一个与Asp.net TextBox同样功能的 TextBox control, 可以了解一下        Control底层的实现原理(二). 代码实现      1. 核心控件生成代码文件TextBox.cs  1  1using System; 2  2using System.Data; 3  3using System.Configuration; 4  4using System.Web; 5  5using

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

asp.net|示例|下载|验证码 学习整理了一下(一).功能       用HttpHandler实现图片验证码       (二).代码如下  1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHandler Language="C#" Class="ValidateImageHandler" %> 2  3 using System; 4 using System.Web; 5 using Syst

在ASP.NET 2.0中操作数据之二十:定制数据修改界面_自学过程

简介 GridView和DetailsView控件通过绑定列和CheckBox列,可以简化数据编辑界面制作,呈现只读,编辑和新增界面,我们不需要增加元素标记或编写任何额外代码就可以得到这些界面.然而,绑定列和CheckBox列呈现的界面却缺乏实际应用中经常用到的定制功能.为了对GridView和DetailsView的编辑.新增界面进行定制,需要用模板列(TemplateField)替换原有列. 在上节教程中我们讨论如何增加验证控件来定制数据编辑界面,而本节教程将演示如何使用Web控件对实际的数

在ASP.NET 2.0中操作数据之二:创建一个业务逻辑层_自学过程

导言 本教程的第一节所描述的数据访问层(Data Access Layer,以下简称为DAL)已经清晰地将表示逻辑与数据访问逻辑区分开了.不过,即使DAL将数据访问的细节从表示层中分离出来了,可它却不能处理任何的业务规则.比如说,我们可能不希望产品表中那些被标记为"停用"的产品的"分类编号"或"供应商编号"被更新:我们还可能需要应用一些资历规则,比如说我们都不希望被比自己的资历还要浅的人管理.另外一个比较常见的情况就是授权,比如说只有那些具有特殊

【求助】ASP.NET 2.0制作网站时候,如何使网站内容全屏(像本站)或居中(像pconline)?

问题描述 ASP.NET2.0制作网站时候,如何使网站内容居中(pconline)或全屏(本站)?我是用master页面和content页面编辑的,当我编辑或运行的时候,发现网页的内容都是左对齐的,很不协调,如何使网站内容全屏(像本站一样自动收缩)或居中(像pconline那样网页的两边都是蓝色的空白)?最好全屏的.我是菜鸟,这几天才开始接触ASP.NET,恳请各位大侠不吝赐教.感激不尽!附件是我网页. 解决方案 解决方案二:页面居中:<bodystyle="text-align:cent

Asp.net 2.0 Treeview无限级无刷新示例

本文给出了使用Asp.net 2.0的Treeview实现无限级无刷新的示例源代码,供大家参考! <%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dt

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

返回"ASP.NET 2.0数据教程目录" 导言 和默认翻页方式相比,自定义分页能提高几个数量级的效率.当 我们的需要对大量数据分页的时候就需要考虑自定义分页,然而实现自定义分页 相比默认分页需要做更多工作.对于排序自定义分页数据也是这样,在本教程中 我们就会扩展前面的例子来实现自定义分页数据的排序. 注意:既然本教 程是基于前一个的,因此我们需要把前面教程示例页面EfficientPaging.aspx的 <asp:Content>元素中的代码复制到本教程SortPara

Scott Mitchell的ASP.NET 2.0数据教程之二:创建一个业务逻辑层

返回"ASP.NET 2.0数据教程目录" 导言 本教程的第一节所描述的数据访问层(Data Access Layer,以下 简称为DAL)已经清晰地将表示逻辑与数据访问逻辑区分开了.不过,即使DAL将 数据访问的细节从表示层中分离出来了,可它却不能处理任何的业务规则.比如 说,我们可能不希望产品表中那些被标记为"停用"的产品的" 分类编号"或"供应商编号"被更新:我们还可能需要应用一些 资历规则,比如说我们都不希望被比自己的