100165526.htm

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

HTM
342
字号
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在此可以看到,在调用</span><span lang="EN-US">Dispose</span><span style="FONT-FAMILY: 宋体">方法时,也会调用组件对象的</span><span lang="EN-US">Dispose</span><span style="FONT-FAMILY: 宋体">方法,因为组件对象包含其他组件,所以它们也会被释放。</span></p>
<p class="MsoNormal"><span lang="EN-US">Form1</span><span style="FONT-FAMILY: 宋体">类的构造函数如下所示:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 27.65pt"><span lang="EN-US">&nbsp;&nbsp; public Form1()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 41.5pt"><span lang="EN-US">&nbsp;&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 41.5pt"><span lang="EN-US">&nbsp;&nbsp; //Required for Windows Form Designer support</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&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; InitializeComponent();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 41.5pt"><span lang="EN-US">&nbsp;&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 41.5pt"><span lang="EN-US">&nbsp;&nbsp; //TODO: Add any constructor code after InitializeComponent call</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 41.5pt"><span lang="EN-US">&nbsp;&nbsp; //</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">注意设计器对</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">的调用和注释,顾名思义,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">初始化了添加到窗体上的所有控件,还初始化了窗体的属性。在本示例中,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">如下所示:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; private void InitializeComponent()</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&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; this.components = new System.ComponentModel.Container();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.size = new System.Drawing.Size(300,300);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Text = &quot;Form1&quot;;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">这是很基本的初始化代码。该方法与窗体设计器相关联。使用设计器修改窗体时,这些改动会在</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">中反映出来。如果在</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">中修改了任意类型的代码,下次在设计器中进行修改时,这些改动就会丢失。每次在设计器中进行修改后,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">都会重新生成。如果需要为窗体或窗体上的控件和组件添加其他初始化代码,就应在调用</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">后添加。</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">还负责实例化控件,这样在</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">之前所有引用控件的调用都会失败,并生成一个空引用异常。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">要在窗体上添加控件或组件,可以按下</span><span lang="EN-US">Ctrl-Alt-X</span><span style="FONT-FAMILY: 宋体">或者在</span><span lang="EN-US">Visual Studio .NET</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">View</span><span style="FONT-FAMILY: 宋体">菜单中选择</span><span lang="EN-US">Toolbox</span><span style="FONT-FAMILY: 宋体">。当然此时</span><span lang="EN-US">Form1</span><span style="FONT-FAMILY: 宋体">应处于设计模式。在</span><span lang="EN-US">Solution Explorer</span><span style="FONT-FAMILY: 宋体">中右击</span><span lang="EN-US">Form1.cs</span><span style="FONT-FAMILY: 宋体">,从弹出的菜单中选择</span><span lang="EN-US">View Designer</span><span style="FONT-FAMILY: 宋体">。选择</span><span lang="EN-US">Button</span><span style="FONT-FAMILY: 宋体">控件,把它拖放到设计器的窗体上。也可以双击该控件,把它添加到窗体上。对</span><span lang="EN-US">TextBox</span><span style="FONT-FAMILY: 宋体">控件进行相同的操作。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在窗体上添加了</span><span lang="EN-US">TextBox</span><span style="FONT-FAMILY: 宋体">控件和</span><span lang="EN-US">Button</span><span style="FONT-FAMILY: 宋体">控件后,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">就会扩展,包含如下代码:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">private void InitializeComponent()</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">&nbsp; this.button1 = new System.Windows.Forms.Button();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.textBox1 = new System.Windows.Forms.TextBox();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this SuspendLayout();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //button1</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Location = new System.Drawing.Point(96, 56);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Name = &quot;button1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.TabIndex = 0;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Text = &quot;button1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //textBox1</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this. textBox1.Location = new System.Drawing.Point(88, 104);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this. textBox1.Name = &quot;textBox1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this. textBox1.TabIndex = 1;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this. textBox1.Text = &quot;textBox1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //Form1</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.AutoScaleBaseSize = new System.Drawing.Size(5,13);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.ClientSize = new System.Drawing.Size(292,271);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.Controls.Add(this.textBox1);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.Controls.Add(this.button1);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.Name = &quot;Form1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.Text = &quot;Form1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.ResumeLayout(false);</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果查看该方法中的前</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">行代码,就会看到</span><span lang="EN-US">TextBox</span><span style="FONT-FAMILY: 宋体">控件和</span><span lang="EN-US">Button</span><span style="FONT-FAMILY: 宋体">控件被实例化了。注意给控件指定的名称</span><span lang="EN-US">textBox1</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">button1</span><span style="FONT-FAMILY: 宋体">。默认情况下,设计器会使用控件的名称,并在该名称的最后添加一个整数值。在添加另一个按钮时,设计器会使用名称</span><span lang="EN-US">button2</span><span style="FONT-FAMILY: 宋体">,依次类推。下一行代码是</span><span lang="EN-US">SuspendLayout</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">ResumeLayout</span><span style="FONT-FAMILY: 宋体">对的部分。</span><span lang="EN-US">SuspendLayout()</span><span style="FONT-FAMILY: 宋体">临时挂起控件第一次初始化时发生的布局事件。在该方法的最后,将调用</span><span lang="EN-US">ResumeLayout()</span><span style="FONT-FAMILY: 宋体">方法,把事件重置为正常状态。在包含许多控件的复杂窗体上,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">方法会非常长。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">要修改控件的属性值,可以按下</span><span lang="EN-US">F4</span><span style="FONT-FAMILY: 宋体">,或从</span><span lang="EN-US">View</span><span style="FONT-FAMILY: 宋体">菜单中选择</span><span lang="EN-US">Properties Window</span><span style="FONT-FAMILY: 宋体">。该窗口允许修改控件或组件的大多数属性。在</span><span lang="EN-US">Properties</span><span style="FONT-FAMILY: 宋体">窗口中进行了修改后,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">方法就会重新编写,以反映新属性值。例如,如果在</span><span lang="EN-US">Properties</span><span style="FONT-FAMILY: 宋体">窗口中把</span><span lang="EN-US">Text</span><span style="FONT-FAMILY: 宋体">属性改为</span><span lang="EN-US">My Button</span><span style="FONT-FAMILY: 宋体">,</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">就会包含如下代码:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //button1</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; //</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Location = new System.Drawing.Point(96, 56);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Name = &quot;button1&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.TabIndex = 0;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Text = &quot;button1&quot;;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp; this.button1.Text = &quot;My Button&quot;;</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">如果使用的不是</span><span lang="EN-US">Visual Studio .NET</span><span style="FONT-FAMILY: 宋体">的编辑器,就需要在设计中包含</span><span lang="EN-US">InitializeComponent()</span><span style="FONT-FAMILY: 宋体">类型函数。把所有这些初始化代码放在一个地方,有助于使构造函数更简洁,如果有多个构造函数,还需要确保能从每个构造函数中调用初始化代码。</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165525.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165527.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='100165526.htm'><font color='red'>19.1  创建Windows窗体应用程序</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165523.htm'>18.5.2  创建安装程序</a></div><div style='float:right;width:49%'>·<a href='100165524.htm'>18.5.3  高级选项</a></div><div style='float:left;width:49%'>·<a href='100165525.htm'>18.6  小结</a></div><div style='float:right;width:49%'>·<a href='100165527.htm'>19.2  Control类</a></div><div style='float:left;width:49%'>·<a href='100165528.htm'>19.2.1  大小和位置</a></div><div style='float:right;width:49%'>·<a href='100165529.htm'>19.2.2  外观</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

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