100165703.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 296 行 · 第 1/2 页
HTM
296 行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
27.2.3 创建合成的定制控件
</title></head>
<body>
<div class="area">
<div class="col1">
<div class="lineBlue">
</div>
<!-- title -->
<div class="arcTitle">
<h1>
<a href="../16">
C#高级编程(第3版)
</a>
</h1>
<div style="text-align: center; font-size: 15px">
<a href="100165703.htm">
27.2.3 创建合成的定制控件
</a>
</div>
<div style="text-align: center; font-size: 15px">
<a class="url" href="../../default.htm">http://book.csdn.net/</a>
2006-10-13 14:41:00
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165703.htm'><font color='red'>27.2.3 创建合成的定制控件</font></a></h1>
<div id="divRelateNode" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165700.htm'>27.2 定制控件</a></div><div style='float:right;width:49%'>·<a href='100165701.htm'>27.2.1 定制控件的项目配置</a></div><div style='float:left;width:49%'>·<a href='100165702.htm'>27.2.2 基本的定制控件</a></div><div style='float:right;width:49%'>·<a href='100165704.htm'>27.3 测验民意的投票控件</a></div><div style='float:left;width:49%'>·<a href='100165705.htm'>27.3.1 Candidate 控件</a></div><div style='float:right;width:49%'>·<a href='100165706.htm'>27.3.2 StrawPoll控件构建器</a></div></div>
</div>
</div>
</div>
<!-- main -->
<div id="main">
<div id="text">
<div id="csdn_zhaig_ad_yahoo_2"></div>
<link href="css.css" rel="stylesheet" type="text/css" /><h3 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;margin-left:
0cm'><span lang=EN-US>27.2.3 </span><span style='font-family:黑体'>创建合成的定制控件</span></h3>
<p class=MsoNormal><span style='font-family:宋体'>可以把上一小节中的控件与测试窗体中使用的</span><span
lang=EN-US>cycle</span><span style='font-family:宋体'>按钮合并起来,作为合成定制控件的示例。</span></p>
<p class=MsoNormal><span style='font-family:宋体'>把这个合成的控件称为</span><span
lang=EN-US>RainbowLabel2</span><span style='font-family:宋体'>,并把它放到新文件</span><span
lang=EN-US>RainbowLabel2.cs</span><span style='font-family:宋体'>当中。这个控件需要:</span></p>
<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-family:宋体'>从</span><span lang=EN-US>WebControl</span><span
style='font-family:宋体'>继承而来</span><span lang=EN-US>(</span><span
style='font-family:宋体'>这次不是</span><span lang=EN-US>Label)</span></p>
<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-family:宋体'>支持</span><span lang=EN-US>INamingContainer</span></p>
<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-family:宋体'>拥有两个字段,以容纳其子控件</span></p>
<p class=MsoNormal><span style='font-family:宋体'>这</span><span lang=EN-US>3</span><span
style='font-family:宋体'>个任务的代码需要对生成新类文件的代码作如下修改:</span></p>
<p class=a6 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US>using System;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.Web.UI;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.Web.UI.WebControls;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.ComponentModel;</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US> </span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>namespace
PCSCustomWebControls</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>{</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
public class RainbowLabel2 : System.Web.UI.WebControls.WebControl,</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
INamingContainer</span></p>
<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
{</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
private RainbowLabel rainbowLabel = new RainbowLabel();</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
private Button cycleButton = new Button();</span></p>
<p class=a6 style='margin-top:0cm;margin-right:0cm;FTEL:8.15pt;
margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US> ...</span></p>
<p class=MsoNormal><span style='font-family:宋体'>为了配置合成的控件,需要确保把所有的子控件都添加到</span><span
lang=EN-US>Controls</span><span style='font-family:宋体'>集合中,并进行正确的初始化。通过重写</span><span
lang=EN-US>CreateChildControls()</span><span style='font-family:宋体'>,并放置所需的代码</span><span
lang=EN-US>(</span><span style='font-family:宋体'>这里应调用基类的</span><span
lang=EN-US style='letter-spacing:.1pt'>CreateChildControls()</span><span
style='font-family:宋体;letter-spacing:.1pt'>实现,它不会影响类,但可以防止出现预料不到的情况</span><span
lang=EN-US style='letter-spacing:.1pt'>)</span><span style='font-family:宋体;
letter-spacing:.1pt'>,可以完成上述工</span><span style='font-family:宋体'>作:</span></p>
<p class=2 style='margin-top:8.15pt;margin-right:0cm;FTEL:0cm;
margin-left:21.45pt;FTEL:.0001pt;FTEL:18.45pt'><span
lang=EN-US> protected override void
CreateChildControls()</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
{</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
cycleButton.Text = "Cycle colors.";</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
cycleButton.Click += new
System.EventHandler(cycleButton_Click);</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
Controls.Add(cycleButton);</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
Controls.Add(rainbowLabel);</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
base.CreateChildControls();</span></p>
<p class=2 style='margin-top:0cm;margin-right:0cm;FTEL:8.15pt;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?