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

80酷酷网    80kuku.com

  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            //

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

 

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: