100165777.htm

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

HTM
646
字号


<!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>
	
        30.4.3  SelfPlacingWindow示例
</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="100165777.htm">
                        30.4.3  SelfPlacingWindow示例
                    </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='100165777.htm'><font color='red'>30.4.3  SelfPlacingWindow示例</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165774.htm'>30.4  读写注册表</a></div><div style='float:right;width:49%'>·<a href='100165775.htm'>30.4.1  注册表</a></div><div style='float:left;width:49%'>·<a href='100165776.htm'>30.4.2  .NET注册表类</a></div><div style='float:right;width:49%'>·<a href='100165778.htm'>30.5  小结</a></div><div style='float:left;width:49%'>·<a href='100165779.htm'>31.1  WebClient类</a></div><div style='float:right;width:49%'>·<a href='100165780.htm'>31.1.1  下载文件</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><h3 style='margin-top:24.5pt;margin-right:0cm;FTEL:8.15pt;margin-left:
0cm'><a FTEL="_Toc507815217"><span lang=EN-US>30.4.3 &nbsp;SelfPlacingWindow</span></a><span
style='font-family:黑体'>示例</span></h3>

<p class=MsoNormal style='line-height:16.0pt'><a FTEL=SelfPlacingWindow><span
style='font-family:宋体'>下面用一个示例程序来说明注册表类的用法,该示例叫做</span><span lang=EN-US>SelfPlacingWindow</span></a><span
style='font-family:宋体'>,它是一个简单的</span><span lang=EN-US>C# Windows</span><span
style='font-family:宋体'>应用程序,几乎没有任何功能。惟一的功能是单击一个按钮,打开一个标准</span><span
lang=EN-US>Windows</span><span style='font-family:宋体'>颜色对话框</span><span
lang=EN-US>(</span><span style='font-family:宋体'>由</span><span lang=EN-US>System.Windows.Forms.ColorDialog</span><span
style='font-family:宋体'>类表示</span><span lang=EN-US>)</span><span
style='font-family:宋体'>,让用户选择一种颜色,使之成为窗体的背景色。</span></p>

<p class=MsoNormal style='line-height:16.0pt'><span style='font-family:宋体'>尽管缺乏这个功能,但这个自我调节的窗口可以以一种重要而非常友好的方式放在本书开发的其他应用程序上。如果在退出应用程序前,在屏幕上拖动该窗口,改变它的大小,最大化或最小化它,该窗口都会记住新的位置、背景色,这样下一次加载它时,该窗口就会自动恢复用户上一次选择的显示方式。它可以记住这些信息,因为它在关闭时,把这些信息写入注册表。这样,我们不仅介绍了</span><span
lang=EN-US>.NET</span><span style='font-family:宋体'>注册表类,还介绍了它们的典型用法,任何商用的</span><span
lang=EN-US>Windows</span><span style='font-family:宋体'>窗体应用程序都可以以这种方式使用这个类。</span></p>

<p class=MsoNormal style='line-height:16.0pt'><span lang=EN-US>SelfPlacingWindow</span><span
style='font-family:宋体'>在注册表的</span><span lang=EN-US>HKLM\Software\WroxPress\SelfPlacingWindow</span><span
style='font-family:宋体'>键中存储信息,</span><span lang=EN-US>HKLM</span><span
style='font-family:宋体'>通常用于存储应用程序的配置信息,但要注意,它不是用户指定的。如果要更熟练掌握某个应用程序,还应复制</span><span
lang=EN-US>HK</span><span lang=EN-US style='font-family:"Baskerville BE Regular"'>_</span><span
lang=EN-US>Users</span><span style='font-family:宋体'>巢中的信息,这样每个用户才能得到他们自己的配置。</span></p>

<p class=a3 style='margin-top:8.15pt;FTEL:21.45pt'><span
style='font-family:黑体'>注意:</span></p>

<p class=a1 style='FTEL:8.15pt;FTEL:21.45pt'><span
style='font-family:楷体_GB2312'>如果在真正的</span><span lang=EN-US>.NET</span><span
style='font-family:楷体_GB2312'>应用程序执行这个功能,就要考虑使用独立的存储器,而不使用注册表来存储这个信息。另一方面,因为独立的存储器只能用于</span><span
lang=EN-US>.NET</span><span style='font-family:楷体_GB2312'>中,所以如果需要与非</span><span
lang=EN-US>.NET</span><span style='font-family:楷体_GB2312'>应用程序交互操作,就需要使用注册表。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>在最初运行示例时,它会查找这个键,但肯定找不到它,因此它会使用在开发环境中设置的默认大小、颜色和位置。该示例还有一个列表框,其中显示了从注册表中读取的信息。在第一次运行该示例时,得到屏幕图</span><span
lang=EN-US>30-13</span><span style='font-family:宋体'>。</span></p>

<p align=center><span lang=EN-US><img border=0 width=231 height=201
src="30/image014.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体'>图</span><span
lang=EN-US>&nbsp; 30-13</span></p>

<p class=MsoNormal><span style='font-family:宋体'>如果修改背景色,在屏幕上移动</span><span
lang=EN-US>SelfPlacingWindow</span><span style='font-family:宋体'>或重新设置它的大小,在应用程序退出前,会创建</span><span
lang=EN-US>HKLM\Software\WroxPress\SelfPlacingWindow</span><span
style='font-family:宋体'>键,并在其中写入新的配置信息。使用</span><span lang=EN-US>regedit</span><span
style='font-family:宋体'>可以查看这些信息,如图</span><span lang=EN-US>30-14</span><span
style='font-family:宋体'>所示。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>从这个屏幕图上可以看出,</span><span
lang=EN-US>SelfPlacingWindow</span><span style='font-family:宋体'>在注册表项中放置了许多值。</span></p>

<p class=MsoNormal><span style='font-family:宋体'>值</span><span lang=EN-US>Red</span><span
style='font-family:宋体'>、</span><span lang=EN-US>Green</span><span
style='font-family:宋体'>和</span><span lang=EN-US> Blue</span><span
style='font-family:宋体'>给出了组成所选背景色的颜色成分</span><span lang=EN-US>(</span><span
style='font-family:宋体'>参见第</span><span lang=EN-US>20</span><span
style='font-family:宋体'>章</span><span lang=EN-US>)</span><span style='font-family:
宋体'>。现在,系统上显示的颜色完全可以用这</span><span lang=EN-US>3</span><span style='font-family:
宋体'>种颜色成分描述,颜色成分用</span><span lang=EN-US>0</span><span style='font-family:宋体'>到</span><span
lang=EN-US>255</span><span style='font-family:宋体'>之间的数字来表示</span><span
lang=EN-US>(</span><span style='font-family:宋体'>或者</span><span lang=EN-US>16</span><span
style='font-family:宋体'>进制的</span><span lang=EN-US>0x00</span><span
style='font-family:宋体'>和</span><span lang=EN-US> 0xff)</span><span
style='font-family:宋体'>。这里给出的值组成了一种亮绿色。另外,还有</span><span lang=EN-US>4</span><span
style='font-family:宋体'>个</span><span lang=EN-US>REG</span><span lang=EN-US
style='font-family:"Baskerville BE Regular"'>_</span><span lang=EN-US>DWORD</span><span
style='font-family:宋体'>值,它们表示窗口的位置和大小:</span><span lang=EN-US>X</span><span
style='font-family:宋体'>和</span><span lang=EN-US>Y</span><span style='font-family:
宋体'>是窗口左上角在桌面上的坐标<span style='letter-spacing:-1.0pt'>——</span></span><span
style='letter-spacing:-1.0pt'> </span><span style='font-family:宋体'>即从屏幕的左上角向右的像素数,和向下的像素数。</span><span
lang=EN-US>Width </span><span style='font-family:宋体'>和</span><span lang=EN-US>
Height</span><span style='font-family:宋体'>指定窗口的大小。</span><span lang=EN-US>WindowsState</span><span
style='font-family:宋体'>是这里惟一使用的字符串数据类型</span><span lang=EN-US>(REG</span><span
lang=EN-US style='font-family:"Baskerville BE Regular"'>_</span><span
lang=EN-US>SZ)</span><span style='font-family:宋体'>,它可以包含</span><span
lang=EN-US>normal</span><span style='font-family:宋体'>、</span><span lang=EN-US>maximised</span><span
style='font-family:宋体'>或</span><span lang=EN-US>minimised</span><span
style='font-family:宋体'>字符串中的一个,这取决于退出应用程序时它的最终状态。</span></p>

<p align=center><span lang=EN-US><img border=0 width=417 height=195
src="30/image015.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体'>图</span><span
lang=EN-US>&nbsp; 30-14</span></p>

<p class=MsoNormal><span style='font-family:宋体'>如果现在再次运行</span><span
lang=EN-US>SelfPlacingWindow</span><span style='font-family:宋体'>,它就会读取这个注册表项,并自动定位,如图</span><span
lang=EN-US>30-15</span><span style='font-family:宋体'>所示。</span></p>

<p class=MsoNormal align=center style='text-align:center'><span lang=EN-US><img
border=0 width=277 height=240 src="30/image016.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体'>图</span><span
lang=EN-US>&nbsp; 30-15</span></p>

<p class=MsoNormal><span style='font-family:宋体'>这次退出</span><span lang=EN-US>SelfPlacingWindow</span><span
style='font-family:宋体'>时,它会用本次退出该示例时设置的新值重写原来的注册设置。要开发该示例,在</span><span
lang=EN-US>Visual Studio .NET</span><span style='font-family:宋体'>中创建一个</span><span
lang=EN-US>Windows Forms</span><span style='font-family:宋体'>项目,使用开发环境的工具箱添加一个列表框和按钮。把这些控件的名称分别改为</span><span
lang=EN-US>listBoxMessages </span><span style='font-family:宋体'>和</span><span
lang=EN-US> buttonChooseColor</span><span style='font-family:宋体'>。还需要确保使用</span><span
lang=EN-US>Microsoft.Win32</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=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.Drawing;</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.Collections;</span></p>

<p class=a6 style='margin-left:21.45pt;FTEL:18.45pt'><span lang=EN-US>using
System.ComponentModel;</span></p>

⌨️ 快捷键说明

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