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

  
(一). 概述
   通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
   1. 核心控件实现代码文件ComputeControl.cs
  1 using  System;
  2 using  System.Collections.Generic;
  3 using  System.Text;
  4 using  System.Web;
  5 using  System.Web.UI;
  6 using  System.Web.UI.WebControls;
  7
  8 namespace  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

 

(三). 示例代码下载
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值