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

本文介绍了一个自定义复合控件的实现方法,通过创建一个简单的计算器控件来演示整个过程。该计算器支持基本的算术运算,并展示了如何在ASP.NET Web应用程序中使用自定义控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一). 概述
通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
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 {
10publicclassComputeControl:System.Web.UI.WebControls.CompositeControl
11{
12//操作数
13privateTextBoxtb1;
14privateTextBoxtb2;
15
16//显示结果
17privateLabellb;
18
19//操作(+-*/)
20privateButtonbt1;
21privateButtonbt2;
22privateButtonbt3;
23privateButtonbt4;
24
25protectedoverridevoidCreateChildControls()
26{
27tb1=newTextBox();
28tb1.ID="TextBox1";
29this.Controls.Add(tb1);
30
31tb2=newTextBox();
32tb2.ID="TextBox2";
33this.Controls.Add(tb2);
34
35lb=newLabel();
36lb.ID="Label1";
37lb.BackColor=System.Drawing.Color.YellowGreen;
38lb.Text="Result:";
39this.Controls.Add(lb);
40
41bt1=newButton();
42bt1.ID="Button1";
43bt1.Text="+";
44bt1.CommandArgument="+";
45bt1.Click+=newEventHandler(bt_Click);
46this.Controls.Add(bt1);
47bt2=newButton();
48bt2.ID="Button2";
49bt2.Text="-";
50bt2.CommandArgument="-";
51bt2.Click+=newEventHandler(bt_Click);
52this.Controls.Add(bt2);
53bt3=newButton();
54bt3.ID="Button3";
55bt3.Text="*";
56bt3.CommandArgument="*";
57bt3.Click+=newEventHandler(bt_Click);
58this.Controls.Add(bt3);
59bt4=newButton();
60bt4.ID="Button4";
61bt4.Text="/";
62bt4.CommandArgument="/";
63bt4.Click+=newEventHandler(bt_Click);
64this.Controls.Add(bt4);
65}

66
67voidbt_Click(objectsender,EventArgse)
68{
69try
70{
71if("Result:"!=lb.Text)
72{
73lb.Text=lb.Text+",";
74}

75switch(((Button)sender).CommandArgument)
76{
77case"+":lb.Text=lb.Text+Convert.ToString(Convert.ToInt32(this.tb1.Text)+Convert.ToInt32(this.tb2.Text));break;
78case"-":lb.Text=lb.Text+Convert.ToString(Convert.ToInt32(this.tb1.Text)-Convert.ToInt32(this.tb2.Text));break;
79case"*":lb.Text=lb.Text+Convert.ToString(Convert.ToInt32(this.tb1.Text)*Convert.ToInt32(this.tb2.Text));break;
80case"/":lb.Text=lb.Text+Convert.ToString(Convert.ToInt32(this.tb1.Text)/Convert.ToInt32(this.tb2.Text));break;
81}

82}

83catch
84{
85lb.Text="It'sisnotrightformat,pleaseinputagain.";
86}

87}

88
89protectedoverridevoidRenderContents(HtmlTextWriteroutput)
90{
91output.Write("a");
92
93}

94
95protectedoverridevoidRender(HtmlTextWriterwriter)
96{
97writer.RenderBeginTag(HtmlTextWriterTag.Table);
98
99//Operatingitem1
100writer.RenderBeginTag(HtmlTextWriterTag.Tr);
101writer.RenderBeginTag(HtmlTextWriterTag.Td);
102tb1.RenderControl(writer);
103writer.RenderEndTag();
104writer.RenderEndTag();
105
106//<br>
107writer.WriteBreak();
108
109//Operatingsymbol
110writer.RenderBeginTag(HtmlTextWriterTag.Tr);
111writer.RenderBeginTag(HtmlTextWriterTag.Td);
112writer.WriteEncodedText("+-*/");
113writer.RenderEndTag();
114writer.RenderEndTag();
115
116//Operatingitem2
117writer.RenderBeginTag(HtmlTextWriterTag.Tr);
118writer.RenderBeginTag(HtmlTextWriterTag.Td);
119tb2.RenderControl(writer);
120writer.RenderEndTag();
121writer.RenderEndTag();
122
123//Operatingsymbol
124writer.RenderBeginTag(HtmlTextWriterTag.Tr);
125writer.RenderBeginTag(HtmlTextWriterTag.Td);
126writer.WriteEncodedText("EQUAL");
127writer.RenderEndTag();
128writer.RenderEndTag();
129
130//Therelustlabel
131writer.RenderBeginTag(HtmlTextWriterTag.Tr);
132writer.RenderBeginTag(HtmlTextWriterTag.Td);
133lb.RenderControl(writer);
134writer.RenderEndTag();
135writer.RenderEndTag();
136
137//Button1
138writer.RenderBeginTag(HtmlTextWriterTag.Tr);
139writer.RenderBeginTag(HtmlTextWriterTag.Nobr);
140writer.RenderBeginTag(HtmlTextWriterTag.Td);
141bt1.RenderControl(writer);
142bt2.RenderControl(writer);
143bt3.RenderControl(writer);
144bt4.RenderControl(writer);
145writer.RenderEndTag();
146writer.RenderEndTag();
147
148writer.RenderEndTag();
149}

150}

151}

152

2. 前台页面代码 UsingCompositeControl.aspx (使用方法)

1 <% @PageLanguage = " C# " AutoEventWireup = " true " CodeFile = " UsingCompositeControl.aspx.cs " Inherits = " UsingCompositeControl " %>
2 <% @RegisterAssembly = " KingControls " Namespace = " KingControls " TagPrefix = " KSP " %>
3 ……
4 < KSP:ComputeControlID = " compute1 " runat = " server " />
5 ……
6

(三). 示例代码下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值