100165777.htm

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

HTM
646
字号
<p class=MsoNormal style='line-height:15.6pt'><span style='font-family:宋体'>因为要读取每个值,所以</span><span
lang=EN-US>ReadSettings()</span><span style='font-family:宋体'>方法比较长,在此还需解释它,在列表框中显示它,并对主窗体的相应属性进行适当的调整。</span><span
lang=EN-US>ReadSettings()</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; bool ReadSettings()</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;
RegistryKey softwareKey = </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;
Registry.LocalMachine.OpenSubKey(&quot;Software&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;
RegistryKey wroxKey = softwareKey.OpenSubKey(&quot;<span style='letter-spacing:
.1pt'>Wrox</span>Press&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;
if (wroxKey == null)</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;
return false;</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;
RegistryKey selfPlacingWindowKey = </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;
wroxKey.OpenSubKey(&quot;SelfPlacingWindow&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;
if (selfPlacingWindowKey == null)</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;
return false;</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;
else</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;
listBoxMessages.Items.Add(&quot;Successfully opened key &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;
selfPlacingWindowKey.ToString());</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;
int redComponent = (int)selfPlacingWindowKey.GetValue(&quot;Red&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;
int greenComponent = (int)selfPlacingWindowKey.GetValue(&quot;Green&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;
int blueComponent = (int)selfPlacingWindowKey.GetValue(&quot;Blue&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;
this.BackColor = Color.FromArgb(redComponent, greenComponent, </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;
blueComponent);</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;
listBoxMessages.Items.Add(&quot;Background color: &quot; + BackColor.Name);</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;
int X = (int)selfPlacingWindowKey.GetValue(&quot;X&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;
int Y = (int)selfPlacingWindowKey.GetValue(&quot;Y&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;
this.DesktopLocation = new Point(X, Y);</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;
listBoxMessages.Items.Add(&quot;Desktop location: &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;DesktopLocation.ToString());</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;
this.Height = (int)selfPlacingWindowKey.GetValue(&quot;Height&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;
this.Width = (int)selfPlacingWindowKey.GetValue(&quot;Width&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;
listBoxMessages.Items.Add(&quot;Size: &quot; + new </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;
Size(Width,Height).ToString());</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;
string initialWindowState = </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;
(string)selfPlacingWindowKey.GetValue(&quot;WindowState&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;
listBoxMessages.Items.Add(&quot;Window State: &quot; + initialWindowState);</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;
this.WindowState = (FormWindowState)FormWindowState.Parse</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;
(WindowState.GetType(), initialWindowState);</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 true;</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;&nbsp;&nbsp;&nbsp;
}</span></p>

<p class=MsoNormal style='line-height:15.0pt'><span style='font-family:宋体'>在</span><span
lang=EN-US>ReadSettings()</span><span style='font-family:宋体'>中,首先浏览</span><span
lang=EN-US>HKLM/Software/WroxPress/SelfPlacingWindow</span><span
style='font-family:宋体'>注册表项,但在本例中,要找到这个键,才能读取其中的内容。如果它不存在,在第一次运行示例时才会创建它。本例将停止读取键,而且不打算创建任何键。现在使用</span><span
lang=EN-US>RegistryKey.OpenSubkey()</span><span style='font-family:宋体'>方法。如果</span><span
lang=EN-US>OpenSubkey()</span><span style='font-family:宋体'>返回空引用,就表示该注册表项不存在,因此只能给调用代码返回</span><span
lang=EN-US>false</span><span style='font-family:宋体'>值。</span></p>

<p class=MsoNormal style='line-height:15.0pt'><span style='font-family:宋体'>在读取该键时,使用了</span><span
lang=EN-US>RegistryKey.GetValue()</span><span style='font-family:宋体'>方法,该方法返回一个对象引用,这表示这个方法可以返回任何类的实例。与</span><span
lang=EN-US>SetValue()</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>SetValue()</span><span style='font-family:宋体'>返回的引用。如果引发了异常,就说明有人打开了注册表,且改变了值的类型,因此这种转换就会引发异常,</span><span
lang=EN-US>Form1</span><span style='font-family:宋体'>构造函数中的处理程序会捕获该异常。</span></p>

<p class=MsoNormal style='line-height:15.0pt'><span style='font-family:宋体'>这段代码的其余部分还使用了一个数据类型</span><span
lang=EN-US>Size</span><span style='font-family:宋体'>结构,</span><span lang=EN-US>Size</span><span
style='font-family:宋体'>结构类似于</span><span lang=EN-US>Point</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>Size</span><span
style='font-family:宋体'>结构便于确定在列表框中显示的窗体的大小。</span></p>

</div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165776.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165778.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='100165777.htm'><font color='red'>30.4.3  SelfPlacingWindow示例</font></a></h1>
                        <div id="divRealteNod2" 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>
        </div>
</body>
</html>

⌨️ 快捷键说明

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