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

本文介绍了一个基于ASP.NET的自定义计算器控件实现过程,包括控件的创建、按钮点击事件处理及结果显示等关键步骤,并提供了完整的源代码。
2007年01月05日 20:15:00
(一). 概述
通过制作一个>计算器 <功能自定义复合控件演示复合控件的制作>
(二). 代码
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

(三). 示例代码下载


Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1475104


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值