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

    技术2022-05-11  68

    (一). 概述    通过制作一个<计算器>功能自定义复合控件演示复合控件的制作 (二). 代码    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 1100            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();108109            //Operating symbol110            writer.RenderBeginTag(HtmlTextWriterTag.Tr);111            writer.RenderBeginTag(HtmlTextWriterTag.Td);112            writer.WriteEncodedText(" + - * / ");113            writer.RenderEndTag();114            writer.RenderEndTag();115116            //Operating item2117            writer.RenderBeginTag(HtmlTextWriterTag.Tr);118            writer.RenderBeginTag(HtmlTextWriterTag.Td);119            tb2.RenderControl(writer);120            writer.RenderEndTag();121            writer.RenderEndTag();122123            //Operating symbol124            writer.RenderBeginTag(HtmlTextWriterTag.Tr);125            writer.RenderBeginTag(HtmlTextWriterTag.Td);126            writer.WriteEncodedText(" EQUAL ");127            writer.RenderEndTag();128            writer.RenderEndTag();129130            //The relust label131            writer.RenderBeginTag(HtmlTextWriterTag.Tr);132            writer.RenderBeginTag(HtmlTextWriterTag.Td);133            lb.RenderControl(writer);134            writer.RenderEndTag();135            writer.RenderEndTag();136137            //Button1138            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();147148            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

    最新回复(0)