Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
2007-02-10 22:33
866 查看
(一). 概述
通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
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
(三). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/KingControls.rar
通过制作一个<计算器>功能自定义复合控件演示复合控件的制作
(二). 代码
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
(三). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/KingControls.rar
相关文章推荐
- Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- [导入]Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- [导入]Asp.net 2.0 制作复合控件示例(二)[示例代码下载]
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- [导入]Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- [导入]Asp.net 2.0 制作最原始的TextBox控件[一](示例代码下载)
- Asp.net 2.0 自定义控件开发[创建自定义右键PopupMenu控件][示例代码下载]
- Asp.net 2.0 自定义控件开发[创建自定义HeaderRow的GridView控件][示例代码下载]
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)
- Asp.net 2.0 自定义控件开发[开发一个图表(WebChart)控件(柱状图示例)](示例代码下载)
- Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)