100165703.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 296 行 · 第 1/2 页
HTM
296 行
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>Add()</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 void cycleButton_Click(object sender,
System.EventArgs e)</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>
rainbowLabel.Cycle();</span></p>
<p class=2 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></p>
<p class=MsoNormal><span style='font-family:宋体'>为了让合成控件的用户可以访问</span><span
lang=EN-US>RainbowLabel</span><span style='font-family:宋体'>子控件中的文本,可以添加一个属性,使它映射到子控件的</span><span
lang=EN-US>Text</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> public string Text</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>
get</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>
return rainbowLabel.Text;</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>
set</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>
rainbowLabel.Text = value;</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
}</span></p>
<p class=2 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>Render()</span><span
style='font-family:宋体'>。这个方法的基本实现需要类的</span><span lang=EN-US>Controls</span><span
style='font-family:宋体'>集合中的每个控件,让它们显示出来。因为</span><span lang=EN-US>Render()</span><span
style='font-family:宋体'>是一个受保护的方法,所以不能调用每个控件的</span><span lang=EN-US>Render()</span><span
style='font-family:宋体'>方法,而是调用公共方法</span><span lang=EN-US>RenderControl()</span><span
style='font-family:宋体'>,这会得到相同的效果,因为</span><span lang=EN-US>RenderControl()</span><span
style='font-family:宋体'>调用</span><span lang=EN-US>Render()</span><span
style='font-family:宋体'>方法,所以不必再修改</span><span lang=EN-US>RainbowLabel</span><span
style='font-family:宋体'>类中的任何代码。为了对此进行更多的控制</span><span lang=EN-US>(</span><span
style='font-family:宋体'>例如控制合成控件输出由子控件生成的</span><span lang=EN-US>HTML)</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 Render(HtmlTextWriter output)</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>
rainbowLabel.RenderControl(output);</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
cycleButton.RenderControl(output);</span></p>
<p class=2 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>HtmlText Writer</span><span style='font-family:宋体'>实例传递给子控件的</span><span
lang=EN-US>RenderControl()</span><span style='font-family:宋体'>方法,子控件生成的</span><span
lang=EN-US>HTML</span><span style='font-family:宋体'>就会显示出来。</span></p>
<p class=MsoNormal><span style='font-family:宋体'>这个控件的使用方法与</span><span
lang=EN-US>RainbowLabel</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> <form method="post"
runat="server" ID="Form1"></span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
<PCS:RainbowLabel2 Runat="server"</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
Text="Multicolored label composite"</span></p>
<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>
ID="rainbowLabel2"/></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>
</form></span></p>
<p class=MsoNormal><span style='font-family:宋体'>这次包含循环颜色的按钮。</span></p>
</div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165702.htm">上一页</a> <a href="index.html">首页</a> <a href="100165704.htm">下一页</a>
</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="divCurrentNode2" 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="divRealteNod2" 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>
<!-- 评论 -->
<!-- 今日推荐 -->
</div>
<!-- 页脚 -->
<div id="foot">
<img src="../../book/readbook.aspx@node=5703&bookid=16&bookname=27.2.3++_25b4_25b4_25bd_25a8_25ba_25cf_25b3_25c9_25b5_25c4_25b6_25a8_25d6_25c6_25bf_25d8_25bc_25fe" alt="" width="0" height="0" />
<style>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?