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&nbsp; </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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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>&nbsp;</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>&nbsp;&nbsp;
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>&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;&nbsp;&nbsp;&nbsp;&nbsp;
INamingContainer</span></p>

<p class=a6 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;
private RainbowLabel rainbowLabel = new RainbowLabel();</span></p>

<p class=2 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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>&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>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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected override void
CreateChildControls()</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;
cycleButton.Text = &quot;Cycle colors.&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;cycleButton.Click += new
System.EventHandler(cycleButton_Click);</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;
Controls.Add(cycleButton);</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;
Controls.Add(rainbowLabel);</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;
base.CreateChildControls();</span></p>

<p class=2 style='margin-top:0cm;margin-right:0cm;FTEL:8.15pt;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?