<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>VC#.NET 编程</title><link>http://blog.vckbase.com/abbey/category/34.html</link><description>使用VC#.NET编程的源代码、心得</description><managingEditor>Abbey的小匣子</managingEditor><dc:language>zh-CN</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>Abbey的小匣子</dc:creator><title>使用水晶报表心得</title><link>http://blog.vckbase.com/abbey/articles/28447.html</link><pubDate>Thu, 09 Aug 2007 18:04:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/28447.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/28447.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/28447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/28447.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/28447.html</trackback:ping><description>&lt;P&gt;&lt;FONT face="Courier New"&gt;最近&amp;#8220;火把节&amp;#8221;放假，于是抽空帮弟弟所在的医院写了个检验报告单的管理系统。在打印报告单时，使用了Crystal Report for Visual Studio.NET。感觉除了每次打开项目或者报表时总要弹出的注册提示外，其他还好。就说说我是怎么用它制作检验报告单的吧。&lt;BR&gt;&lt;BR&gt;我做了个主－子表，其中主表显示报告单上病人改名等基本信息，子表则显示该病人各种检测指标的信息。相应的，为了提取数据方便，我在SQL Server的数据库里做了两个对应的视图，再利用Visual Studio.NET的IDE创建了两个强类型的DataSet。&lt;BR&gt;&lt;BR&gt;在&amp;#8220;推-Push&amp;#8221;、&amp;#8220;拉-Pull&amp;#8221;模型的问题上，我选择了前者。因为Push模式下，是由应用程序来管理与数据库的安全连接等，并可以选择传递给Report的数据。同时，我也能充分利用应用程序里设计的数据库连接方式进行动态调整。&lt;BR&gt;&lt;BR&gt;于是，我将主从表的数据来源分别定义为此前创建的那两个强类型的DataSet，并利用这些字段做好了主表和子表的版面，又创建了主－子表之间的链接。期间，我还简单地学了学Crystal的语法，有点意思，挺象我一直鄙视的BASIC的。到此，Report设计这边的工作就算完了。&lt;BR&gt;&lt;BR&gt;因为是WinForm类型的应用程序，所以我在一个对话框上放置了一个ReportViewer。当然的，出于灵活性考虑，我没有在设计时就绑定Viewer的ReportSource，而是在这个对话框Load事件中才动态的指定为主表对象。这里特别要指出的是，Viewer的ReportSource赋值语句放置的位置特别有趣。&lt;BR&gt;&lt;BR&gt;正确的流程应当是：生成主表的DataSet并传递给主表对象---&amp;gt;生成子表的DataSet并传递给子表对象---&amp;gt;将主表对象作为ReportSource指定给Viewer。&lt;BR&gt;&lt;BR&gt;如果不按这样的顺序，就老会有数据库登录的对话框弹出来，或者某张表的DataSet不能正确绑定。简单地咔嚓了一下，发现只要Viewer.ReportSource一被赋值，数据库的登录框就会出来，哈哈。&lt;BR&gt;&lt;BR&gt;最后，请简单看下效果图吧&lt;BR&gt;&lt;IMG height=513 src="/images/vckbase_com/abbey/8.jpg" width=650 border=0&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/28447.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的小匣子</dc:creator><title>使用强类型的DataSet中如何处理DBNull</title><link>http://blog.vckbase.com/abbey/articles/28060.html</link><pubDate>Tue, 07 Aug 2007 14:41:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/28060.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/28060.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/28060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/28060.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/28060.html</trackback:ping><description>&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;最近尝试着使用强类型的DataSet(Typed DataSet)，结果遇到了DBNull的难题：&lt;BR&gt;&lt;BR&gt;利用IDE生成的DataSet，遇到数据库中某个允许为NULL的字段时，其对应的Property通常为如下形式：&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;IMG id=Codehighlighter1_28_462_Open_Image onclick="this.style.display='none'; Codehighlighter1_28_462_Open_Text.style.display='none'; Codehighlighter1_28_462_Closed_Image.style.display='inline'; Codehighlighter1_28_462_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_28_462_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_28_462_Closed_Text.style.display='none'; Codehighlighter1_28_462_Open_Image.style.display='inline'; Codehighlighter1_28_462_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StandardValue&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_28_462_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_28_462_Open_Text&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_50_337_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_337_Open_Text.style.display='none'; Codehighlighter1_50_337_Closed_Image.style.display='inline'; Codehighlighter1_50_337_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_50_337_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_50_337_Closed_Text.style.display='none'; Codehighlighter1_50_337_Open_Image.style.display='inline'; Codehighlighter1_50_337_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;get&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_50_337_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_50_337_Open_Text&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_76_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_162_Open_Text.style.display='none'; Codehighlighter1_76_162_Closed_Image.style.display='inline'; Codehighlighter1_76_162_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_76_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_162_Closed_Text.style.display='none'; Codehighlighter1_76_162_Open_Image.style.display='inline'; Codehighlighter1_76_162_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_76_162_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_76_162_Open_Text&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;((&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT size=2&gt;.tableItems.StandardValueColumn]));&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;IMG id=Codehighlighter1_215_319_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_319_Open_Text.style.display='none'; Codehighlighter1_215_319_Closed_Image.style.display='inline'; Codehighlighter1_215_319_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_215_319_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_319_Closed_Text.style.display='none'; Codehighlighter1_215_319_Open_Image.style.display='inline'; Codehighlighter1_215_319_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(InvalidCastException&amp;nbsp;e)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_215_319_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_215_319_Open_Text&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;throw&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StrongTypingException(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;无法获取值，因为它是&amp;nbsp;DBNull。&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT size=2&gt;,&amp;nbsp;e);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;IMG id=Codehighlighter1_359_448_Open_Image onclick="this.style.display='none'; Codehighlighter1_359_448_Open_Text.style.display='none'; Codehighlighter1_359_448_Closed_Image.style.display='inline'; Codehighlighter1_359_448_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_359_448_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_359_448_Closed_Text.style.display='none'; Codehighlighter1_359_448_Open_Image.style.display='inline'; Codehighlighter1_359_448_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #0000ff"&gt;set&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_359_448_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_359_448_Open_Text&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.tableItems.StandardValueColumn]&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT size=2&gt;&amp;nbsp;value;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;结果我在使用这个相关的DataSet时，遇到了麻烦，利用DataAdapter从SQL Server 2000的一张表中读取数据时，因其中一行的&lt;STRONG&gt;StandardValue&lt;/STRONG&gt;字段为&lt;STRONG&gt;DBNull&lt;/STRONG&gt;，于是到上面的&lt;FONT color=#0000ff&gt;return&lt;/FONT&gt;就出现Cast异常。最后不得不做了如下修改：&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG id=Codehighlighter1_28_544_Open_Image onclick="this.style.display='none'; Codehighlighter1_28_544_Open_Text.style.display='none'; Codehighlighter1_28_544_Closed_Image.style.display='inline'; Codehighlighter1_28_544_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_28_544_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_28_544_Closed_Text.style.display='none'; Codehighlighter1_28_544_Open_Image.style.display='inline'; Codehighlighter1_28_544_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StandardValue&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_28_544_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_28_544_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_50_419_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_419_Open_Text.style.display='none'; Codehighlighter1_50_419_Closed_Image.style.display='inline'; Codehighlighter1_50_419_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_50_419_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_50_419_Closed_Text.style.display='none'; Codehighlighter1_50_419_Open_Image.style.display='inline'; Codehighlighter1_50_419_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;get&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_50_419_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_50_419_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_76_244_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_244_Open_Text.style.display='none'; Codehighlighter1_76_244_Closed_Image.style.display='inline'; Codehighlighter1_76_244_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_76_244_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_244_Closed_Text.style.display='none'; Codehighlighter1_76_244_Open_Image.style.display='inline'; Codehighlighter1_76_244_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;try&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_76_244_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_76_244_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.IsStandardValueNull())&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Empty;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;((&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.tableItems.StandardValueColumn]));&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_297_401_Open_Image onclick="this.style.display='none'; Codehighlighter1_297_401_Open_Text.style.display='none'; Codehighlighter1_297_401_Closed_Image.style.display='inline'; Codehighlighter1_297_401_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_297_401_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_297_401_Closed_Text.style.display='none'; Codehighlighter1_297_401_Open_Image.style.display='inline'; Codehighlighter1_297_401_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;catch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(InvalidCastException&amp;nbsp;e)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_297_401_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_297_401_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;throw&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;StrongTypingException(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;无法获取值，因为它是&amp;nbsp;DBNull。&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;e);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_441_530_Open_Image onclick="this.style.display='none'; Codehighlighter1_441_530_Open_Text.style.display='none'; Codehighlighter1_441_530_Closed_Image.style.display='inline'; Codehighlighter1_441_530_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_441_530_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_441_530_Closed_Text.style.display='none'; Codehighlighter1_441_530_Open_Image.style.display='inline'; Codehighlighter1_441_530_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;set&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_441_530_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_441_530_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.tableItems.StandardValueColumn]&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;value;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;这样问题虽然是得到了初步解决，但这样似乎有点危险。等待进一步思考... 
&lt;HR id=null&gt;
&lt;BR&gt;20071017更新&lt;BR&gt;&lt;BR&gt;今天又想起了这个问题，于是赶紧翻阅MSDN，又在网上查了查，才发现原来DBNull有如此丰富的处理方式&lt;BR&gt;&lt;BR&gt;1. 使用强类型DataSet中强类型的DataRow的IsXXXXNull()方法，其中的XXXX是你设定的列名，判断某列的值是否为DBNull；使用同样的DataRow的SetXXXXNull()方法进行赋值，或者直接使用DBNull类的Value数据属性进行赋值。&lt;BR&gt;&lt;BR&gt;2.&amp;nbsp;通过给强类型的DataSet对应的XML.xsd添加nullValue批注，可以设定当某一列的值为DBNull时，默认的行为或者值。通常情况下，利用VS.Net的IDE生成的DataSet默认的行为是抛出异常。你可以通过设置nullValue批注，实现特定目的：&lt;BR&gt;&lt;BR&gt;特定的某个值&amp;nbsp; 在遇到空字段值时，自动向DataSet中的相应成员赋与该特定值&lt;BR&gt;_null&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 若对应引用类型，则返回空的引用；若对应int等类型，则触发异常&lt;BR&gt;_throw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 抛出异常&lt;BR&gt;_empty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 若对应string类型，则返回string.Empty；若对应引用类型，则返回一个不带参数构造出的对象；若是int等类型，则触发异常&lt;BR&gt;&lt;BR&gt;如何添加nullValue批注，MSDN给了我们一个详尽的例子。首先是添加一个XML引用：&lt;BR&gt;xmlns:codegen="urn:schemas-microsoft-com:xml-msprop"&lt;BR&gt;&lt;BR&gt;然后编辑XSD文件，为特定字段添加所需的nullValue批注。同样有现成的MSDN范例：&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff00ff"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;?&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:schema&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerDataSet"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:codegen&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="urn:schemas-microsoft-com:xml-msprop"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:msdata&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="urn:schemas-microsoft-com:xml-msdata"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerDataSet"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;msdata:IsDataSet&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="true"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:choice&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;maxOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="unbounded"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Customers"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Customer"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedPlural&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Customers"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CompanyName"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CompanyName"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Phone"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Phone"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:nullValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Orders"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Order"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedPlural&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Orders"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="OrderID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="OrderID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:int"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:nullValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="EmployeeID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="EmployeeID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:nullValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:int"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="OrderAdapter"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="OrderAdapter"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:nullValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="1980-01-01T00:00:00"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="xs:dateTime"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;minOccurs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:sequence&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:choice&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:complexType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:unique&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Constraint1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:selector&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;xpath&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;=".//Customers"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:field&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;xpath&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:unique&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:keyref&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustOrders"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;refer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Constraint1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedParent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="Customer"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;codegen:typedChildren&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="GetOrders"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:selector&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;xpath&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;=".//Orders"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:field&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;xpath&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;="CustomerID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:keyref&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:element&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;xs:schema&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;HR id=null&gt;
&lt;FONT face="Courier New" size=2&gt;2007-10-26&lt;BR&gt;&lt;BR&gt;突然发现自己好傻。久了没摸，脑子真是迟钝了许多。刚才在拷贝、粘贴时，突然发现右边的属性窗口里某个字段有个NullValue属性，正是我要预设DBNull映射值的地方。哎，看来是得找本类似Database programming in .NET或者ADO.NET内幕之类的书来看看了。&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/28060.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的小匣子</dc:creator><title>利用WMI判断IE版本、判断Windows版本</title><link>http://blog.vckbase.com/abbey/articles/27020.html</link><pubDate>Thu, 21 Jun 2007 15:40:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/27020.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/27020.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/27020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/27020.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/27020.html</trackback:ping><description>&lt;FONT face="Courier New"&gt;
&lt;HR id=null&gt;
&lt;STRONG&gt;&lt;FONT size=4&gt;一、判断IE版本&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;在网上找了很多判断IE版本的办法，大多是通过读取注册表中IE的Build值实现的。我在搜索WMI时发现了&lt;STRONG&gt;MicrosoftIE&lt;/STRONG&gt;这个命名空间，仔细再看，又找到了一个类&lt;STRONG&gt;MicrosoftIE_Summary&lt;/STRONG&gt;。经过一番试探，找到了其中的一个属性&lt;STRONG&gt;Build&lt;/STRONG&gt;，即与注册表中一致的IE内部版本号，格式为&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;DIV class=indent&gt;&lt;FONT face="Courier New"&gt;&lt;VAR&gt;major version &lt;/VAR&gt;&lt;VAR&gt;build number&lt;/VAR&gt;.&lt;VAR&gt;sub-build number&lt;/VAR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;随即，我又在&lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/164539/zh-cn"&gt;&lt;FONT face="Courier New"&gt;http://support.microsoft.com/kb/164539/zh-cn&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;上找到了各版IE对应的Build列表&lt;BR&gt;&lt;BR&gt;版本&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 产品&lt;BR&gt;-----------------------------------------------------------------&lt;BR&gt;4.40.308&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 1.0 (Plus! for Windows 95)&lt;BR&gt;4.40.520&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 2.0&lt;BR&gt;4.70.1155&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 3.0&lt;BR&gt;4.70.1158&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 3.0 (Windows 95 OSR2)&lt;BR&gt;4.70.1215&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 3.01&lt;BR&gt;4.70.1300&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 3.02 和 3.02a&lt;BR&gt;4.71.544&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 4.0 Platform Preview 1.0 (PP1)&lt;BR&gt;4.71.1008.3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 4.0 Platform Preview 2.0 (PP2)&lt;BR&gt;4.71.1712.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 4.0&lt;BR&gt;4.72.2106.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 4.01&lt;BR&gt;4.72.3110.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 4.01 Service Pack 1 (Windows 98)&lt;BR&gt;4.72.3612.1713&amp;nbsp;&amp;nbsp; Internet Explorer 4.01 Service Pack 2 &lt;BR&gt;5.00.0518.10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 5 Developer Preview (Beta 1)&lt;BR&gt;5.00.0910.1309&amp;nbsp;&amp;nbsp; Internet Explorer 5 Beta (Beta 2)&lt;BR&gt;5.00.2014.0216&amp;nbsp;&amp;nbsp; Internet Explorer 5&lt;BR&gt;5.00.2314.1003&amp;nbsp;&amp;nbsp; Internet Explorer 5 (Office 2000)&lt;BR&gt;5.00.2614.3500&amp;nbsp;&amp;nbsp; Internet Explorer 5 (Windows 98 Second Edition)&lt;BR&gt;5.00.2516.1900&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 (Windows 2000 Beta 3, build 5.00.2031)&lt;BR&gt;5.00.2919.800&amp;nbsp;&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 (Windows 2000 RC1, build 5.00.2072)&lt;BR&gt;5.00.2919.3800&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 (Windows 2000 RC2, build 5.00.2128)&lt;BR&gt;5.00.2919.6307&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 (Office 2000 SR-1)&lt;BR&gt;5.00.2920.0000&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 (Windows 2000, build 5.00.2195)&lt;BR&gt;5.00.3103.1000&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP1 (Windows 2000 SP1)&lt;BR&gt;5.00.3105.0106&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP1（Windows 95/98 和 Windows NT 4.0）&lt;BR&gt;5.00.3314.2101&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP2（Windows 95/98 和 Windows NT 4.0）&lt;BR&gt;5.00.3315.1000&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP2 (Windows 2000 SP2)&lt;BR&gt;5.00.3502.1000&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP3（仅 Windows 2000 SP3）&lt;BR&gt;5.00.3700.1000&amp;nbsp;&amp;nbsp; Internet Explorer 5.01 SP4（仅 Windows 2000 SP4）&lt;BR&gt;5.50.3825.1300&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 Developer Preview (Beta)&lt;BR&gt;5.50.4030.2400&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 和 Internet 工具 (Beta)&lt;BR&gt;5.50.4134.0100&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 for Windows Me (4.90.3000)&lt;BR&gt;5.50.4134.0600&amp;nbsp;&amp;nbsp; Internet Explorer 5.5&lt;BR&gt;5.50.4308.2900&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 Advanced Security Privacy Beta&lt;BR&gt;5.50.4522.1800&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 Service Pack 1&lt;BR&gt;5.50.4807.2300&amp;nbsp;&amp;nbsp; Internet Explorer 5.5 Service Pack 2&lt;BR&gt;6.00.2462.0000&amp;nbsp;&amp;nbsp; Internet Explorer 6 Public Preview (Beta)&lt;BR&gt;6.00.2479.0006&amp;nbsp;&amp;nbsp; Internet Explorer 6 Public Preview (Beta) Refresh&lt;BR&gt;6.00.2600.0000&amp;nbsp;&amp;nbsp; Internet Explorer 6 (Windows XP)&lt;BR&gt;6.00.2800.1106&amp;nbsp;&amp;nbsp; Internet Explorer 6 Service Pack 1 (Windows XP SP1)&lt;BR&gt;6.00.2900.2180&amp;nbsp;&amp;nbsp; Internet Explorer 6 for Windows XP SP2&lt;BR&gt;6.00.3663.0000&amp;nbsp;&amp;nbsp; Internet Explorer 6 for Windows Server 2003 RC1 &lt;BR&gt;6.00.3718.0000&amp;nbsp;&amp;nbsp; Internet Explorer 6 for Windows Server 2003 RC2&lt;BR&gt;6.00.3790.0000&amp;nbsp;&amp;nbsp; Internet Explorer 6 for Windows Server 2003（已发行）&lt;BR&gt;6.00.3790.1830&amp;nbsp;&amp;nbsp; Internet Explorer 6 for Windows Server 2003 SP1 和 Internet Explorer 6 for Windows XP x64&lt;BR&gt;7.00.5730.1100&amp;nbsp;&amp;nbsp; Internet Explorer 7 for Windows XP 和 Internet Explorer 7 for Windows Server 2003&lt;BR&gt;7.00.6000.16386&amp;nbsp; Internet Explorer 7 for Windows Vista&lt;BR&gt;&lt;BR&gt;剩下的代码便很简单了，比如这样的：&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(ManagementObjectSearcher&amp;nbsp;searcher&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ManagementObjectSearcher(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;@"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;root\CIMV2\Applications\MicrosoftIE&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;MicrosoftIE_Summary&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;))&lt;BR&gt;&lt;IMG id=Codehighlighter1_162_380_Open_Image onclick="this.style.display='none'; Codehighlighter1_162_380_Open_Text.style.display='none'; Codehighlighter1_162_380_Closed_Image.style.display='inline'; Codehighlighter1_162_380_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_162_380_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_162_380_Closed_Text.style.display='none'; Codehighlighter1_162_380_Open_Image.style.display='inline'; Codehighlighter1_162_380_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_162_380_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN id=Codehighlighter1_162_380_Open_Text&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ieBuild&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;.Empty;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(ManagementObject&amp;nbsp;queryObj&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;searcher.Get())&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ieBuild&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;queryObj[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Build&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;].ToString();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;((&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Version(ieBuild))&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Version(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;52014.0216&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN style="COLOR: #000000"&gt;))&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;
&lt;HR id=null&gt;
&lt;FONT size=4&gt;&lt;STRONG&gt;二、判断Windows版本&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;与上述方法类似，只是换了个命名空间和相应的类，这回是root\CIMV2下的&lt;STRONG&gt;Win32_OperatingSystem&lt;/STRONG&gt;。这个类有&lt;STRONG&gt;Caption&lt;/STRONG&gt;、&lt;STRONG&gt;Build&lt;/STRONG&gt;等属性，我更喜欢用&lt;STRONG&gt;Caption&lt;/STRONG&gt;，免去了比较数字形式的版本号之累，简单的字符串匹配就可以完成判断：&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(ManagementObjectSearcher&amp;nbsp;searcher&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ManagementObjectSearcher(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;@"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;root\CIMV2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;Win32_OperatingSystem&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;))&lt;BR&gt;&lt;IMG id=Codehighlighter1_138_348_Open_Image onclick="this.style.display='none'; Codehighlighter1_138_348_Open_Text.style.display='none'; Codehighlighter1_138_348_Closed_Image.style.display='inline'; Codehighlighter1_138_348_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_138_348_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_138_348_Closed_Text.style.display='none'; Codehighlighter1_138_348_Open_Image.style.display='inline'; Codehighlighter1_138_348_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_138_348_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_138_348_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;osCaption&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Empty;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(ManagementObject&amp;nbsp;queryObj&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;searcher.Get())&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;osCaption&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;queryObj[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Caption&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;].ToString();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(osCaption.IndexOf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;@"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Windows&amp;nbsp;XP&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/27020.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>创建和使用强类型的DataSet</title><link>http://blog.vckbase.com/abbey/articles/24645.html</link><pubDate>Sun, 25 Feb 2007 04:39:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/24645.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/24645.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/24645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/24645.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/24645.html</trackback:ping><description>&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
粗略地在网上搜索了一下，类似的文章已经不少了。这篇随笔纯粹就是为我自己准备的，怕自己久了没用就忘了。当然，如果同时能给你带来点帮助也不错啊。&lt;BR&gt;&lt;BR&gt;环境：Windows Server 2003，Visual C#.Net 2003&lt;BR&gt;&lt;BR&gt;一、创建XML Sheme&lt;BR&gt;&lt;BR&gt;在Project中添加一个新项：数据集，取名MyDataSet；&lt;BR&gt;&lt;BR&gt;在数据集页上右键-&amp;gt;添加-&amp;gt;新建element，给表取名PersonTable；&lt;BR&gt;&lt;BR&gt;在这张表上添加若干字段：ID(int)，Name(string)，Address(string)，Birthday(gDay)，OnDuty(boolean)；&lt;BR&gt;&lt;BR&gt;在ID上右键添加主键key&lt;BR&gt;&lt;BR&gt;制作好的XML Sheme如下图&lt;BR&gt;&lt;BR&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=Machine的状态图 src="/images/vckbase_com/abbey/79/r_dataset.JPG"&gt;&lt;BR&gt;&lt;BR&gt;随后IDE会自动创建一个数据集MyDataSet，可以在空白的地方右键-&amp;gt;预览数据集&lt;BR&gt;&lt;BR&gt;二、使用强类型的DataSet&lt;BR&gt;&lt;BR&gt;不用再过多阐述，直接来段示例代码：&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;MyDataSet&amp;nbsp;ds&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDataSet();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;MyDataSet.PersonTableRow&amp;nbsp;row&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ds.PersonTable.NewPersonTableRow();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;row.ID&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;row.Name&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Jackson&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;row.Address&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Road&amp;nbsp;14&amp;nbsp;in&amp;nbsp;New&amp;nbsp;York&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;row.Birthday&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;DateTime(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1995&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;3&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;row.OnDuty&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT face="Courier New" size=2&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;ds.PersonTable.AddPersonTableRow(row);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;上面这段代码中的出现的类MyDataSet、PersonTableRow等都是IDE自动为我们创建的，爽吧？&lt;BR&gt;&lt;BR&gt;三、额外的说明&lt;BR&gt;&lt;BR&gt;使用Visual C# 2005 Express Edition来做这个XML Sheme更简单和方便，因为它做的表更直观。&lt;BR&gt;&lt;BR&gt;在Visual C#.Net 2003中要设定某个不是主键的字段不能为空值好象有点麻烦，我在IDE的属性窗口找了半天也没找到。最后是手工修改了类MyDataSet的方法InitClass()，添加了this.columnName.AllowDBNull = false，以设置Name字段不能为空值。&lt;BR&gt;&lt;BR&gt;经常会遇到的异常：Data.ConstraintException与Data.NoNullAllowedException&lt;BR&gt;&lt;BR&gt;回想以前写类似的程序，总是建立一个问题域的类，然后再建立一个数据库意义上的类，再添加若干的转换方法，真是痛苦。 
&lt;HR id=null&gt;
&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/24645.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的小匣子</dc:creator><title>利用Process类实现等待子进程结束功能</title><link>http://blog.vckbase.com/abbey/articles/702.html</link><pubDate>Sun, 22 Aug 2004 02:25:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/702.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/702.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/702.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/702.html</trackback:ping><description>&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Process是.NET Framework提供给我们用于进程管理的一个类，并以组件的形式放在了VC#.NET IDE的工具箱中。下面以实际的代码演示如何实现父进程等待子进程退出的功能（代码已做大量简化）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
//在构造子中初始化Process对象与IsLoaded&lt;BR&gt;Process processSub = new Process();&lt;BR&gt;bool IsLoaded = false;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;public bool LoadSubProcess()&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;//使用非静态的Start()，才能建立进程间的父子关系&lt;BR&gt;&amp;nbsp;&amp;nbsp;processSub.StartInfo.FileName = PLocation;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;//设置进程结束时的回调方法，this是父进程的窗口对象&lt;BR&gt;&amp;nbsp;&amp;nbsp;processSub.SynchronizingObject = this;&lt;BR&gt;&amp;nbsp;&amp;nbsp;processSub.Exited += new EventHandler(ExitHandler);&lt;BR&gt;&amp;nbsp;&amp;nbsp;processSub.EnableRaisingEvents = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;processSub.Start();&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;//子进程已被装载标志&lt;BR&gt;&amp;nbsp;&amp;nbsp;IsLoaded = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;return true;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;//当进程结束时，会回调这个方法，此时置IsLoaded为false&lt;BR&gt;private void ExitHandler(object sender, System.EventArgs e)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;processSub.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;IsLoaded = false;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;//在主进程窗口类的Application.Idle事件中检查子进程是否已经关闭&amp;nbsp;&lt;BR&gt;private void MainForm_Idle(object sender, System.EventArgs e)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;//当然判断条件不可能如此简单，否则IsLoaded在对象构造时为false&lt;BR&gt;&amp;nbsp;&amp;nbsp;if (!IsLoaded))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//这里加上子进程退出后父进程想要做的事&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;return;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;2007-3-20修订&lt;BR&gt;&lt;BR&gt;考虑到上述实现方式中，子线程对象需要保存一个对父线程对应的Form对象的引用，而且需要添加一个IsLoaded标志进行判断，略显累赘，所以在回顾了《&lt;A href="http://www.vckbase.com/document/viewdoc/?id=1126"&gt;&lt;FONT face="Courier New" size=2&gt;利用辅助线程更新用户界面UI&lt;/FONT&gt;&lt;/A&gt;》一文的方法后，参考文中的实现方式，将上例改为：&lt;BR&gt;&lt;BR&gt;1. 利用主线程的BeginInvoke()以异步方式调用启动子线程的方法，即本例中的LoadSubProcess()，并为之设置一个回调方法Callback()；&lt;BR&gt;&lt;BR&gt;2.&amp;nbsp;在LoadSubProcess()内部，不再设置其回调方法，而是利用Process.WaitForExit()进入无限循环等待，等Process对应的进程结束后，在WaitForExit()之后紧接调用Process.Close()；&lt;BR&gt;&lt;BR&gt;3. 当子线程结束后，Callback()被调用，我们接着在Callback()中去做其余类似更新界面等工作。&lt;BR&gt;&lt;BR&gt;这样的方式，比我原来采用的方式更符合语境逻辑，适合在分层的系统中使用。&lt;BR&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/702.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>在VC#中导入几个操作INI文件的Windows API （源代码）</title><link>http://blog.vckbase.com/abbey/articles/701.html</link><pubDate>Sun, 22 Aug 2004 02:06:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/701.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/701.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/701.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/701.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/701.html</trackback:ping><description>&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这两天写个程序，需要操作INI文件，于是想法子把Windows中操作INI文件的几个API导入了VC#中。希望大家不断改进。那个FormatMessage() API我就没导入，呵呵。 
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Runtime.InteropServices;&lt;BR&gt;using System.Text;&lt;/P&gt;
&lt;P&gt;sealed class INIHelper&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;//以下是对Windows API的再次封装&lt;BR&gt;&amp;nbsp;&amp;nbsp;//在MSDN的说明中，只有WritePrivateProfileString()失败时会有系统错误，其他的在失败时都会以缺省值返回&lt;BR&gt;&amp;nbsp;&amp;nbsp;//所以在WritePrivateProfileString()中加入了一个异常抛出&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;public static int GetPrivateProfileString(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string Default,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder ReturnedString,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int nSize,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return API_GetPrivateProfileString(AppName, KeyName, Default, ReturnedString, nSize, FileName);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;public static bool WritePrivateProfileString(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string String,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool boolResult = API_WritePrivateProfileString(AppName, KeyName, String, FileName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( !boolResult )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string strError = "系统异常代码：" + API_GetLastError().ToString();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp; new SystemException(strError);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return boolResult;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;public static int GetPrivateProfileInt(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int nDefault,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return API_GetPrivateProfileInt(AppName, KeyName, nDefault, FileName);&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;public static bool WritePrivateProfileInt(string AppName, string KeyName, int Int,string FileName)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return WritePrivateProfileString(AppName, KeyName, Int.ToString(), FileName);&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;///////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR&gt;&amp;nbsp;&amp;nbsp;//以下是从Kernel32.DLL中导入相关的Windows API&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;[DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetPrivateProfileString")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;private static extern int API_GetPrivateProfileString(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string Default,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder ReturnedString,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int nSize,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;[DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "WritePrivateProfileString")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;private static extern bool API_WritePrivateProfileString(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string String,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;[DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetPrivateProfileInt")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;private static extern int API_GetPrivateProfileInt(string AppName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string KeyName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int nDefault,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string FileName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;[DllImport("Kernel32.DLL", CharSet = CharSet.Auto, EntryPoint = "GetLastError")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;private static extern int API_GetLastError();&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/701.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>Visual Studio.NET 2003中Windows Form的一个Bug？</title><link>http://blog.vckbase.com/abbey/articles/700.html</link><pubDate>Sun, 22 Aug 2004 01:57:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/700.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/700.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/700.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/700.html</trackback:ping><description>&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;环境 
&lt;HR id=null&gt;
Windows Server 2003&lt;BR&gt;Visual Studio 2003 v7.1.3091&lt;BR&gt;.NET Framework v1.1.4322&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;重现步骤 
&lt;HR id=null&gt;
1. 在VC#.NET中新建一个&amp;#8220;Windows应用程序&amp;#8221;项目。&lt;BR&gt;2. 设置Form1的Locked属性为true。&lt;BR&gt;3. 设置Form1的MaximizeBox属性为false。&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;结果&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;尽管这个Form1在VC#.NET IDE的编辑器中确实无法修改大小，但编程生成EXE文件并执行时，仍可以拖动窗口的边框，改变窗口的大小。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;期望结果&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Form1的大小应该不能被改变&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;目前想到的解决办法&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;映射Form1的SizeChanged事件成这样：&lt;BR&gt;private void Form1_SizeChanged(object sender, System.EventArgs e)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp; //这里Size类的构造参数即我们在IDE里编辑出来的Form1的大小&lt;BR&gt;&amp;nbsp;&amp;nbsp; this.ClientSize = new System.Drawing.Size(304, 416);&lt;BR&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;最后想说的是：&lt;FONT color=#0000ff size=5&gt;这不是一个Bug！&lt;/FONT&gt; :-D&lt;/P&gt;
&lt;P&gt;这个Locked只是一个设计属性，要真正固定Form的大小，可选的方式：&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;设置Form的Maxinumsize与MininumSize属性，把这两者设置得与Form的Size属性一样就可以了。&lt;/LI&gt;
&lt;LI&gt;象我那样映射Form的SizeChanged事件。&lt;/LI&gt;
&lt;LI&gt;通过设置FormBorderStyle属性为FixedSingle。&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/700.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>WMI学习笔记（四）——WMI工具介绍</title><link>http://blog.vckbase.com/abbey/articles/422.html</link><pubDate>Wed, 09 Jun 2004 18:06:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/422.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/422.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/422.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/422.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/422.html</trackback:ping><description>&lt;P align=center&gt;&lt;FONT face="Courier New" size=4&gt;&lt;STRONG&gt;WMI 工具介绍&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;要知道WMI能给我们提供哪些信息，那么首先就要弄清CIM这个对象数据库中存储了些什么东西。Microsoft在WMI SDK中提供了一系列的CIM工具，主要包括：&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New" size=2&gt;WIM CIM Studio：查看CIM对象数据库的结构、实例，支持WQL的交互 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New" size=2&gt;WMI Object Browser：查看CIM数据库中的实例 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New" size=2&gt;WMI Event Registration Tool：注册WMI管理事件工具 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New" size=2&gt;WMI Event Viewer：WMI管理事件查看工具&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;在安装了这些工具后，请仔细阅读安装目录下的WMI Tools帮助文档（CHM格式），以熟悉这些工具的使用方法。这些工具均支持连接远程主机，前提是你拥有该主机的登录帐号。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR vAlign=top&gt;
&lt;TH align=left width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;图例&lt;/FONT&gt;&lt;/TH&gt;
&lt;TH align=left width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;描述（这是WMI CIM Studio中的）&lt;/FONT&gt;&lt;/TH&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=具体的普通类 src="/images/vckbase_com/abbey/79/r_RegularClass.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;具体的普通类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=有派生类的抽象类 src="/images/vckbase_com/abbey/79/r_AbstractClass1.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;有派生类的抽象类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=没有派生类的抽象类 src="/images/vckbase_com/abbey/79/r_AbstractClass2.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;没有派生类的抽象类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=具体的关联类 src="/images/vckbase_com/abbey/79/r_Association.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;具体的关联类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=有派生类的抽象关联类 src="/images/vckbase_com/abbey/79/r_AbsAssociation1.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;有派生类的抽象关联类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="11%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=没有派生类的抽象关联类 src="/images/vckbase_com/abbey/79/r_AbsAssociation2.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="89%"&gt;&lt;FONT face="Courier New" size=2&gt;没有派生类的抽象关联类&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR vAlign=top&gt;
&lt;TH align=left width="14%"&gt;&lt;FONT face="Courier New" size=2&gt;图例&lt;/FONT&gt;&lt;/TH&gt;
&lt;TH align=left width="86%"&gt;&lt;FONT face="Courier New" size=2&gt;描述（这是WMI Objcet Browser中的）&lt;/FONT&gt;&lt;/TH&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="14%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=普通对象 src="/images/vckbase_com/abbey/79/r_RegularObj.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="86%"&gt;&lt;FONT face="Courier New" size=2&gt;普通对象&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="14%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=普通类结点 src="/images/vckbase_com/abbey/79/r_ClassNode.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="86%"&gt;&lt;FONT face="Courier New" size=2&gt;由普通类组成的结点&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD width="14%"&gt;&lt;FONT face="Courier New" size=2&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt=关联类结点 src="/images/vckbase_com/abbey/79/r_AssociationNode.jpg"&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="86%"&gt;&lt;FONT face="Courier New" size=2&gt;由关联类与规则组成的结点&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;在CIM Studio里，在Properties属性页里可以查看/编辑/添加类的数据成员（字段）；在Method属性页里能查看类的方法；在Associations属性页里可以查看关系图，关系图显示了类与类之间的关联关系，点击关系图中结点还能打开相应的类进行查看。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;STRONG&gt;CIM Studio中的Property属性页&lt;BR&gt;&lt;/STRONG&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt="CIM Studio中的Property属性页" src="/images/vckbase_com/abbey/79/r_CIMProperty.JPG"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H1&gt;&lt;FONT face="Courier New" size=2&gt;CIM Studio中的Method属性页&lt;BR&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt="CIM Studio中的Method属性页" src="/images/vckbase_com/abbey/79/r_CIMMethod.JPG"&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;H1&gt;&lt;FONT face="Courier New" size=2&gt;CIM Studio中Association显示的关系图&lt;BR&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt="CIM Studio中的关系图" src="/images/vckbase_com/abbey/79/r_Relationship.JPG"&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P align=right&gt;&lt;FONT face="Courier New" size=2&gt;&lt;A href="http://blog.vckbase.com/abbey/articles/331.aspx"&gt;&lt;FONT color=#000080&gt;上一篇&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000080&gt;下一篇&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/422.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>WMI学习笔记（二）——WMI中的命名空间与路径</title><link>http://blog.vckbase.com/abbey/articles/340.html</link><pubDate>Wed, 02 Jun 2004 23:28:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/340.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/340.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/340.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/340.html</trackback:ping><description>&lt;P align=center&gt;&lt;FONT face="Courier New" size=4&gt;&lt;STRONG&gt;WMI中的命名空间与路径&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;本地MSDN文章链接：&lt;/FONT&gt;&lt;A href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/dnmag00/html/wmiover.htm"&gt;&lt;FONT face="Courier New" size=2&gt;WMI:Administering Windows and Applications Across Your Enterprise&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;在WMI内部，使用了类似于驱动器中的文件夹与文件的管理方式。命名空间类似于文件夹，其中的CIM类则类似于文件夹。所有的CIM类都被分门别类地归入相应的命名空间，同一命名空间内不允许有重名的类存在，不同的两上命名空间下则允许重名的类出现。整个空间的根是名为root，其路径也采用了类似于驱动器路径的表达方式，比如&lt;FONT color=#0000ff&gt;\\MyWorkStation\root\cimv2:Win32_Processor&lt;/FONT&gt;就表示了MyWorkStation这台主机中root下cimv2空间中的Win32_Processor这个CIM类。这样的路径表示支持相对路径、绝对路径的表示方法，以当前连接的主机、当前打开的空间作为相对路径的原点，并忽略路径名称的大小写。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这个命名空间的结构可以通过一个类似于&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;WMI CIM Studio&lt;/STRONG&gt;&lt;/FONT&gt;这样的工具查看，还可以输入交互式的WQL语句进行联机查询。同一命名空间中的类保持了相应的继承关系，我们也可以添加自定义的命名空间和类。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这样的命名空间名和路径名就是我们在创建ManagementScope与ManagementPath等对象时，要确定对象所处位置的参数之一。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这是在我的主机上运行CIM Studio时的界面&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt="CIM Studio运行截图" src="/images/vckbase_com/abbey/79/r_CIMStudio.JPG"&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;这是在我的VC#的IDE中访问WMI管理空间的界面显示&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG id=ViewPicture.ascx_GalleryImage alt="WMI Extensions for VS.NET 2003 Server Explorer" src="/images/vckbase_com/abbey/79/r_CIM_Ext.JPG"&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
相关下载&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size=2&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp"&gt;&lt;FONT face="Courier New" size=2&gt;WMI相关下载&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp; &lt;FONT face="Courier New" size=2&gt;我下载了其中的WMI Administrative Tools（只有英文版），它包括了CIM Studio（它以HTM页方式显示结果）；还下载了WMI Extensions for VS.NET 2003 Server Explorer，它让我可以在VS.NET的IDE里象管理数据库一样访问CIM库。 &lt;/FONT&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp"&gt;&lt;FONT face="Courier New" size=2&gt;Windows Platform SDK更新&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp; &lt;FONT face="Courier New" size=2&gt;下载最新的WMI SDK。&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;FONT face="Courier New" size=2&gt;&lt;A href="http://blog.vckbase.com/abbey/articles/244.aspx"&gt;上一篇&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blog.vckbase.com/abbey/articles/331.aspx"&gt;下一篇&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/340.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Abbey的网络日志</dc:creator><title>WMI学习笔记（三）——常见操作</title><link>http://blog.vckbase.com/abbey/articles/331.html</link><pubDate>Tue, 01 Jun 2004 12:19:00 GMT</pubDate><guid>http://blog.vckbase.com/abbey/articles/331.html</guid><wfw:comment>http://blog.vckbase.com/abbey/comments/331.html</wfw:comment><comments>http://blog.vckbase.com/abbey/articles/331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/abbey/comments/commentRss/331.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/abbey/services/trackbacks/331.html</trackback:ping><description>&lt;P align=center&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT face=Arial size=4&gt;&lt;STRONG&gt;常 见 操 作&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;本地MSDN文章链接：&lt;/FONT&gt;&lt;A href="ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/dnbiz2k2/html/bts_wmiprogramming.htm"&gt;&lt;FONT face="Courier New"&gt;BizTalk Server 2002 WMI Programming in Microsoft .NET Framework&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New"&gt;
&lt;HR id=null&gt;
&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size=3&gt;枚举所有的管理对象&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个确定管理范围的ManagementScope对象。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个提供WQL查询语句的WqlObjectQuery对象 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个ManagementObjectSearcher对象，它的构造函数需要之前创建的两个对象作为参数。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;调用ManagementObjectSearcher对象的Get()方法返回一个包括了返回的ManagementObject对象集的ManagementObjectCollection对象。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;用for-each循环访问该ManagementObjectCollection对象中的元素完成枚举。&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=3&gt;&lt;STRONG&gt;获取特定的某个管理对象&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个空的ManagementObject对象，准备存放返回值。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个欲获取管理对象对应的ManagementScope对象。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个用于定位该管理对象的ManagementPath对象。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;设置之前创建的ManagementObject对象的Scope与Path属性。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;调用该ManagementObject对象的Get()方法获取管理对象的信息。&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size=3&gt;创建一个新的管理对象&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个ManagementScope对象，并调用它的Connect()方法完成与托管系统的连接。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;创建一个ManagementPath对象，确定新定理对象所处的位置。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;利用之前创建的ManagementScope与ManagementPath对象作为构造参数，创建一个描述新管理对象的ManagementClass对象，并调用它的CreateInstance()方法创建新管理对象对应的ManagementObject实体。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;设置好该ManagementObject对象的各个属性。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;用PutType.CreateOnly这个枚举类型调用该ManagementObject对象的Put()方法完成更新。&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size=3&gt;删除一个管理对象&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;其操作类似于获取特定管理对象一样，只是最后一步调用的该ManagementObject对象的Delete()方法&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=3&gt;&lt;STRONG&gt;执行特定管理对象上的某个方法&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;获取一个确定的ManagementObject对象。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;利用一个ManagementBaseObject对象把欲调用方法的参数准备好，这是个数组。 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;然后调用ManagementObject对象的BeginInvoke()方法（有点类似于一些常用类的BeginInvoke()方法调用）&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;FONT face="Courier New"&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P align=right&gt;&lt;FONT face="Courier New" size=2&gt;&lt;A href="http://blog.vckbase.com/abbey/articles/340.aspx"&gt;&lt;FONT color=#000080&gt;上一篇&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blog.vckbase.com/abbey/articles/422.aspx"&gt;&lt;FONT color=#000080&gt;下一篇&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/abbey/aggbug/331.html" width = "1" height = "1" /&gt;</description></item></channel></rss>