100165703.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 296 行 · 第 1/2 页

HTM
296
字号
margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</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>&nbsp;&nbsp; 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>&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp; }</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>&nbsp;&nbsp; public string Text</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
get</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return rainbowLabel.Text;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
set</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rainbowLabel.Text = value;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</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>&nbsp;&nbsp; }</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>&nbsp;&nbsp; protected override void Render(HtmlTextWriter output)</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;
{</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rainbowLabel.RenderControl(output);</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp; }</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form method=&quot;post&quot;
runat=&quot;server&quot; ID=&quot;Form1&quot;&gt;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;PCS:RainbowLabel2 Runat=&quot;server&quot;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Text=&quot;Multicolored label composite&quot;</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ID=&quot;rainbowLabel2&quot;/&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/form&gt;</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>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<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 + -
显示快捷键?