<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>.NET</title><link>http://blogs.vbcity.com/mcintyre/category/20.aspx</link><description>.NET</description><managingEditor>Mike McIntyre [MVP Visual Basic]</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Look Mom, no parameters!  Relaxed delegates in Visual Basic 2008 (VB9)</title><link>http://blogs.vbcity.com/mcintyre/archive/2008/05/01/9053.aspx</link><pubDate>Thu, 01 May 2008 18:59:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2008/05/01/9053.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana&gt;Relaxed delegate conversion, introduced in Visual Basic 2008,&amp;nbsp;enables you to assign subs and functions to delegates or handlers even when the signatures are not identical.&amp;nbsp;Therefore, binding to delegates becomes consistent with the binding already allowed in method invocations.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;In Visual Basic prior to 2008:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Sub OnClick&lt;STRONG&gt;(ByVal sender As Object, ByVal e As EventArgs)&lt;/STRONG&gt; Handles RunButton.Click&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Visual Basic prior to VB 2008")&lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;In Visual Basic 2008 (VB9)&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Sub OnClick&lt;STRONG&gt;()&lt;/STRONG&gt; Handles RunButton.Click&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Look Mom, no parameters!")&lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Details:&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb531336.aspx"&gt;&lt;FONT face=Verdana&gt;Relaxed Delegate Conversion&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Mike McIntyre&lt;BR&gt;&lt;A href="http://www.getdotnetcode.com/"&gt;www.getdotnetcode.com&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;!----&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/9053.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Visual Web Gui - ASP.NET web applications built with a .NET Windows Forms project!</title><link>http://blogs.vbcity.com/mcintyre/archive/2008/04/29/9052.aspx</link><pubDate>Tue, 29 Apr 2008 19:19:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2008/04/29/9052.aspx</guid><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Visual Web Gui is an open source product for&amp;nbsp;porting .NET Windows Forms applications to the web.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It is used to create ASP.NET web applications with a very AJAX like experience - without the AJAX programming hassle.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It may be worth it to you to give it a try. Though it's&amp;nbsp;little rough around the edges at this point,&amp;nbsp;this product can be used today to produce web applications from .NET Windows Forms projects. And - the developer is rapidly improving the product each month.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It's easy to get started and it&amp;nbsp;to produce&amp;nbsp;useful web applications. I've been playing around with it for about a week and have already created two small web applications for IT management.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The process is straight-forward:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;1. Download and install&amp;nbsp;the free Visual Web Gui Visual Studio project templates.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;2. Create a Visual Web Gui project. This is a Visual Studio Windows Forms project.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;3.&amp;nbsp;Build out the&amp;nbsp;Windows Froms application.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;4. Compile.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;5. Run result in web browser.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;6. Deploy to web server.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Visual Web Gui web site:&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://www.visualwebgui.com/"&gt;&lt;FONT face=Verdana size=2&gt;http://www.visualwebgui.com/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Visual Web Gui at CodePlex: &lt;/FONT&gt;&lt;A href="http://www.codeplex.com/VWGSilverlight"&gt;&lt;FONT face=Verdana size=2&gt;http://www.codeplex.com/VWGSilverlight&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mike McIntyre&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.getdotnetcode.com"&gt;www.getdotnetcode.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/9052.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>PInvoke Interop Assistant (FREE) - Making PInvoke Easier to Use</title><link>http://blogs.vbcity.com/mcintyre/archive/2008/03/16/9001.aspx</link><pubDate>Sun, 16 Mar 2008 09:29:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2008/03/16/9001.aspx</guid><wfw:comment>http://blogs.vbcity.com/mcintyre/comments/9001.aspx</wfw:comment><comments>http://blogs.vbcity.com/mcintyre/archive/2008/03/16/9001.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.vbcity.com/mcintyre/comments/commentRss/9001.aspx</wfw:commentRss><trackback:ping>http://blogs.vbcity.com/mcintyre/services/trackbacks/9001.aspx</trackback:ping><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Jaren Parsons of the Microsoft Visual Basic Team created &lt;STRONG&gt;PInvoke Interop Assistant&lt;/STRONG&gt;. In a blog announcing the tool he says: &amp;#8220;The motivation behind this tool is writing PInvoke is a hard and often tedious task. There are many rules you must obey and many exceptions that must be taken into account.&amp;#8221;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Read about the tool and get a link to download it at: &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/vbteam/archive/2008/03/14/making-pinvoke-easy.aspx"&gt;&lt;FONT face=Verdana size=2&gt;Making PInvoke Easy&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/9001.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Visual Basic 2008 Books (UPDATED)</title><link>http://blogs.vbcity.com/mcintyre/archive/2008/03/01/8989.aspx</link><pubDate>Sat, 01 Mar 2008 07:30:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2008/03/01/8989.aspx</guid><wfw:comment>http://blogs.vbcity.com/mcintyre/comments/8989.aspx</wfw:comment><comments>http://blogs.vbcity.com/mcintyre/archive/2008/03/01/8989.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.vbcity.com/mcintyre/comments/commentRss/8989.aspx</wfw:commentRss><trackback:ping>http://blogs.vbcity.com/mcintyre/services/trackbacks/8989.aspx</trackback:ping><description>&lt;P&gt;The list has more than doubled since I first published it &lt;A href="http://blogs.vbcity.com/mcintyre/archive/2007/10/07/8762.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Below, in alphabetical order, is a partial listing of Visual Basic 2008 books.&amp;nbsp; Some have already been published, some will be published over the next several months.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.amazon.com/Accelerated-VB-2008-Guy-Fouch&amp;#233;/dp/1590598741"&gt;&lt;FONT face=Verdana size=2&gt;Accelerated VB 2008 (Accelerated)&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.springer.com/west/home/computer/programming?SGWID=4-40007-22-173744606-0"&gt;&lt;FONT face=Verdana size=2&gt;Beginning ASP.NET 3.5 in VB 2008 - Programming Techniques&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://www.apress.com/book/view/1590599470"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Beginning VB 2008 Databases: From Novice to Professional&lt;/STRONG&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle1&gt;&lt;A href="http://www.amazon.com/Beginning-Microsoft-Visual-Basic-2008/dp/0470191341/ref=sr_1_16?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383628&amp;amp;sr=8-16"&gt;&lt;FONT face=Verdana size=2&gt;Beginning Microsoft Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle7&gt;&lt;A href="http://www.amazon.com/Clearly-Visual-Basic-Programming-Microsoft/dp/1423902416/ref=sr_1_23?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204384016&amp;amp;sr=8-23"&gt;&lt;FONT face=Verdana size=2&gt;Clearly Visual Basic: Programming with Microsoft Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle6&gt;&lt;A href="http://www.amazon.com/Introduction-Programming-Using-Visual-VS2008/dp/0136060722/ref=sr_1_21?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383940&amp;amp;sr=8-21"&gt;&lt;FONT face=Verdana size=2&gt;Introduction to Programming Using Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FLINQ-Action-Fabrice-Marguerie%2Fdp%2F1933988169%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1204064915%26sr%3D8-1&amp;amp;tag=ilovevb.net-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325" mce_href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FLINQ-Action-Fabrice-Marguerie%2Fdp%2F1933988169%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1204064915%26sr%3D8-1&amp;amp;tag=ilovevb.net-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;&lt;B&gt;&lt;FONT face=Verdana size=2&gt;LINQ in Action&lt;/FONT&gt;&lt;/B&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle&gt;&lt;A href="http://www.amazon.com/Mastering-Microsoft-Visual-Basic-2008/dp/0470187425/ref=pd_bbs_sr_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204382551&amp;amp;sr=8-5"&gt;&lt;FONT face=Verdana size=2&gt;Mastering Microsoft Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://www.microsoft.com/MSPress/books/12282.aspx"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Microsoft Visual Basic 2008 Express Edition: Build a Program Now!&lt;/STRONG&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle9&gt;&lt;A href="http://www.amazon.com/Microsoft-Visual-Basic-2008-RELOADED/dp/1423902505/ref=sr_1_25?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204384649&amp;amp;sr=8-25"&gt;&lt;FONT face=Verdana size=2&gt;Microsoft Visual Basic 2008: RELOADED&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B&gt;&lt;A href="http://www.murach.com/books/vb08/index.htm"&gt;&lt;FONT face=Verdana size=2&gt;Murach's Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.apress.com/book/view/1590598229"&gt;&lt;FONT face=Verdana size=2&gt;Pro VB 2008 and the .NET 3.5 Platform&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle8&gt;&lt;A href="http://www.amazon.com/Programming-Visual-Basic-Julia-Bradley/dp/0073517208/ref=sr_1_24?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204384586&amp;amp;sr=8-24"&gt;&lt;FONT face=Verdana size=2&gt;Programming in Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle3&gt;&lt;A href="http://www.amazon.com/Programming-Visual-Basic-2008-Applications/dp/0596518439/ref=sr_1_18?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383762&amp;amp;sr=8-18"&gt;&lt;FONT face=Verdana size=2&gt;Programming Visual Basic 2008: Build .NET 3.5 Applications with Microsoft's Popular RAD Tool for Business&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://www.microsoft.com/MSPress/books/11309.aspx"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Programming Windows Services with Microsoft Visual Basic 2008&lt;/STRONG&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle2&gt;&lt;A href="http://www.amazon.com/Teach-Yourself-Visual-Basic-Hours/dp/0672329840/ref=sr_1_17?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383704&amp;amp;sr=8-17"&gt;&lt;FONT face=Verdana size=2&gt;Sams Teach Yourself Visual Basic 2008 in 24 Hours: Complete Starter Kit&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle5&gt;&lt;A href="http://www.amazon.com/Simply-Visual-Basic-2008-3rd/dp/0136053033/ref=sr_1_20?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383888&amp;amp;sr=8-20"&gt;&lt;FONT face=Verdana size=2&gt;Simply Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B&gt;&lt;A href="http://www.amazon.com/Starting-Out-Visual-Basic-2008/dp/0321531353/ref=pd_bbs_sr_11?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204382551&amp;amp;sr=8-11"&gt;&lt;FONT face=Verdana size=2&gt;Starting Out With Visual Basic 2008&lt;/FONT&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.amazon.com/Visual-Basic-2008-Dummies-Computer/dp/0470182385"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 For Dummies&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle10&gt;&lt;A href="http://www.amazon.com/Visual-Basic-Windows-Mobile-Applications/dp/1423927141/ref=sr_1_26?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204384702&amp;amp;sr=8-26"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 for Windows and Mobile Applications: Introductory&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle4&gt;&lt;A href="http://www.amazon.com/Visual-Windows-Mobile-Database-Applications/dp/1423927168/ref=sr_1_19?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204383822&amp;amp;sr=8-19"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 for Windows, Mobile, Web, Office, and Database Applications: Comprehensive &lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.deitel.com/"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 How to Program&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;&lt;A href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0470182628.html"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 Programmer's Reference&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN id=btAsinTitle0&gt;&lt;A href="http://www.amazon.com/Visual-Basic-2008-Recipes-Problem-Solution/dp/1590599705/ref=sr_1_14?ie=UTF8&amp;amp;s=books&amp;amp;qid=1204382551&amp;amp;sr=8-14"&gt;&lt;FONT face=Verdana size=2&gt;Visual Basic 2008 Recipes: A Problem-Solution Approach&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN&gt;&lt;FONT face=Verdana size=2&gt;Mike McIntyre&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;B class=sans&gt;&lt;SPAN&gt;&lt;FONT face=Verdana size=2&gt;&lt;A href="http://www.getdotnetcode.com"&gt;Get Dot Net Code&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8989.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Free Visual Studio 2008 eBook Offer</title><link>http://blogs.vbcity.com/mcintyre/archive/2008/01/11/8941.aspx</link><pubDate>Fri, 11 Jan 2008 06:49:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2008/01/11/8941.aspx</guid><description>&lt;TABLE cellSpacing=5 cellPadding=0 width=668 background=images/content_background.jpg border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD height=50&gt;Get it at: &lt;A href="http://csna01.libredigital.com/?urvs5cn3s8"&gt;Free eBook Offer&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;H1&gt;Visual Studio 2008&lt;/H1&gt;
&lt;P class=PreviewText&gt;Preview the first chapter from any of these Microsoft Press Visual Studio 2008 titles. When you're ready, sign up for the free download offer to get additional content. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="99%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top align=middle width="33%"&gt;&lt;IMG height=183 alt="" src="http://csna01.libredigital.com/images/ms_linq_cvr.jpg" width=150 vspace=5 border=0&gt;&lt;BR&gt;&lt;A onmouseover="MM_swapImage('LINQ','','images/btn_ViewChpt1_mouseover.jpg',1)" onclick="javascript:getBook('View Chapter 1 of LINQ'); return false;" onmouseout=MM_swapImgRestore() href="http://csna01.libredigital.com/?urvs5cn3s8#"&gt;&lt;IMG id=LINQ alt="" src="http://csna01.libredigital.com/images/btn_ViewChpt1.jpg" border=0 name=LINQ&gt; &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=middle&gt;&lt;IMG height=238 alt="" src="http://csna01.libredigital.com/images/Vertical_rule_VSEbook_unreg.jpg" width=1 border=0&gt; &lt;/TD&gt;
&lt;TD vAlign=top align=middle width="33%"&gt;&lt;IMG height=183 alt="" src="http://csna01.libredigital.com/images/ms_ajax_cvr.jpg" width=150 vspace=5 border=0&gt;&lt;BR&gt;&lt;A onmouseover="MM_swapImage('AJAX','','images/btn_ViewChpt1_mouseover.jpg',1)" onclick="javascript:getBook('View Chapter 1 of AJAX'); return false;" onmouseout=MM_swapImgRestore() href="http://csna01.libredigital.com/?urvs5cn3s8#"&gt;&lt;IMG id=AJAX alt="" src="http://csna01.libredigital.com/images/btn_ViewChpt1.jpg" border=0 name=AJAX&gt; &lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=center align=middle&gt;&lt;IMG height=238 alt="" src="http://csna01.libredigital.com/images/Vertical_rule_VSEbook_unreg.jpg" width=1 border=0&gt; &lt;/TD&gt;
&lt;TD vAlign=top align=middle width="33%"&gt;&lt;IMG height=183 alt="" src="http://csna01.libredigital.com/images/ms_silverlight_cvr.jpg" width=150 vspace=5 border=0&gt;&lt;BR&gt;&lt;A onmouseover="MM_swapImage('Silverlight','','images/btn_ViewChpt1_mouseover.jpg',1)" onclick="javascript:getBook('View Chapter 1 of Silverlight'); return false;" onmouseout=MM_swapImgRestore() href="http://csna01.libredigital.com/?urvs5cn3s8#"&gt;&lt;IMG id=Silverlight onclick="javascript:getBook('View Chapter 1 of Silverlight'); return false;" alt="" src="http://csna01.libredigital.com/images/btn_ViewChpt1.jpg" border=0 name=Silverlight&gt; &lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8941.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>More VB XNA Stuff at ILoveVB.com</title><link>http://blogs.vbcity.com/mcintyre/archive/2007/12/24/8929.aspx</link><pubDate>Mon, 24 Dec 2007 09:06:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2007/12/24/8929.aspx</guid><description>&lt;P&gt;For more VB XNA game code visit:&amp;nbsp; &lt;A href="http://ilovevb.net/Web/"&gt;http://ilovevb.net/Web/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Checkout the downloads section.&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8929.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Free Line and Shape Controls for Visual Basic 2005</title><link>http://blogs.vbcity.com/mcintyre/archive/2007/10/06/8760.aspx</link><pubDate>Sat, 06 Oct 2007 08:40:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2007/10/06/8760.aspx</guid><description>&lt;FONT size=2&gt;Do you get frustrated trying to add graphics to you .NET Windows Forms applications? Learning to use the .NET graphics classes is not easy. Managing the graphics you create with the classes increases the amount of code you need to write.&lt;/FONT&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;There was a line and shape control for creating graphics in Visual Basic before .NET. It was widely used by developers to easily decorate the Windows Forms they created with graphics. It was easy to use.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The line and shape control was missing-in-action in Visual Basic for .NET 2002 and 2003.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;For Visual Basic 2005, Microsoft has provided a Power Pack that adds line and shape controls to Visual Studio 2005. The Power Pack includes controls that enable you to draw lines, ovals, and rectangles on forms and containers at design time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;These controls provide an easy way to decorate a Windows Forms with graphics just like the VB6 line and shape control.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;And, the Power Pack controls introduce powerful new features to the shapes such as events. With events you can change the appearance of graphics at runtime based on events occurring in the application.&amp;nbsp; This adds a whole new dimension to line and shape controls. For example, add click and double-click events allow developers to respond and interact with end users.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The new Line and Shape controls included in this version of the Visual Basic 2005 Power Packs are a set of three graphical controls that enable you to draw lines, ovals, and rectangles on forms and containers at design time. &amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Line and Shape controls encapsulate many of the graphics methods that are contained in the System.Drawing namespace. This enables you to draw lines and shapes in a single step &lt;U&gt;without having to create graphics objects, pens, and brushes&lt;/U&gt;. Complex graphics techniques such as gradient fills can be accomplished by just setting some properties.&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;FONT size=2&gt;Download and Try the Visual Basic Power Pack Line and Shape Controls&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Download an installer at:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=92faa81e-e9c1-432c-8c29-813493a04ecd&amp;amp;displaylang=en"&gt;&lt;FONT size=2&gt;Microsoft Visual Basic 2005 Power Packs 2.0&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;During installation line and shape control Help is installed installed.&amp;nbsp; To learn how to use the line and shape controls search Visual Studio help for this topic:&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN id=nsrTitle&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;Introduction to the Line and Shape Controls&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Also during installation, a Visual Studio PowerPacks v2.0 Toolbox Tab is added to Visual Studio 2005:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;IMG src="http://getdotnetco.web119.discountasp.net/nexDotNet/020030PowerPackLineAndShapeControlsVB2005/Visual1.jpg" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;With it you can drag a line, and oval shape, or a rectangle shape onto the design surface of a Windows form.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;IMG src="http://getdotnetco.web119.discountasp.net/nexDotNet/020030PowerPackLineAndShapeControlsVB2005/Visual2.jpg" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Select a shape and use the 'Properties' pane to manipulate the shape.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;IMG height=528 src="http://getdotnetco.web119.discountasp.net/nexDotNet/020030PowerPackLineAndShapeControlsVB2005/ManipulateImageWithProperties.jpg" width=521 border=0&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The possibilities are nearly endless.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=273 src="http://getdotnetco.web119.discountasp.net/nexDotNet/020030PowerPackLineAndShapeControlsVB2005/EndlessPossibilities.jpg" width=276 border=0&gt;&lt;/P&gt;
&lt;P&gt;Mike McIntyre &lt;A href="http://www.getdotnetcode.com/"&gt;http://www.getdotnetcode.com&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8760.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>Build an ASP.NET 2.0 Web Site Navigation System Pt3</title><link>http://blogs.vbcity.com/mcintyre/archive/2007/05/03/8270.aspx</link><pubDate>Thu, 03 May 2007 15:06:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2007/05/03/8270.aspx</guid><description>&lt;FONT size=1&gt;Source Code: &lt;/FONT&gt;&lt;A href="http://www.getdotnetcode.com/nexDotNet/020029Build_ASP.NET_Navigation_System_Pt3/Build_ASP.NET_Navigation_System_Pt3.htm"&gt;&lt;FONT size=1&gt;Build an ASP.NET 2.0 Web Site Navigation System Pt3&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Build an ASP.NET 2.0 Web Site Navigation System Pt3&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;
&lt;DIV align=center&gt;
&lt;CENTER&gt;
&lt;TABLE id=table2 style="BORDER-COLLAPSE: collapse" borderColor=#808000 height=1 cellSpacing=0 cellPadding=3 align=left border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700 height=2&gt;
&lt;TABLE id=table3 style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=6 cellPadding=6 width=675 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="100%"&gt;
&lt;TABLE id=table4 cellPadding=5 width=700 align=left&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="HEIGHT: 26px" vAlign=top align=left colSpan=2&gt;&lt;FONT size=2&gt;This is part three of a three part article that demonstrates how to build an ASP.NET navigation system. In part one, web pages were added to a web site and then referenced in a ASP.NET 2.0 SiteMap file. In part two an ASP.NET 2.0 Menu control was tied to the SiteMap file created in part one. In part three an ASP.NET SiteMapPath (bread crumbs menu) is tied to the SiteMap created in part one and the Menu added in part two.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT size=2&gt;Read previous parts of the article -&amp;gt; &lt;A href="http://www.getdotnetcode.com/nexDotNet/020024Build_ASP.NET_Navigation_System_Pt1/Build_ASP.NET_Navigation_System_Pt1.htm"&gt;Part 1&lt;/A&gt;, &lt;A href="http://www.getdotnetcode.com/nexDotNet/020026Build_ASP.NET_Navigation_System_Pt2/Build_ASP.NET_Navigation_System_Pt2.htm"&gt;Part 2&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;B&gt;Clean Up the Master Page&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The master page used in parts 1 and 2 was getting cluttered so I clean it up. Here are the steps I took:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;1. Removed the Read Me and GetDotNetCode links below the banner header.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;2. Merged the two cells below the banner header.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;3. Removed the row above the banner header that contained the words: 'Bread Crumbs Menu (Will be added in Part Three)'&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;B&gt;Add an ASP.NET 2.0 SiteMapPath Control to the Master Page&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;An ASP.NET 2.0 SiteMapPath control was drug from the Toolbox to the row under the banner header.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Because a site map with the name Web.sitemap was already present in the web sites root directory, the new control was automatically wired to it. (The site map was added in part one of this article.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;Test the Site Map&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Run the application. Select any page from the application, from the left menu. As you do, the SiteMapPath control will display a 'bread crumbs' menu that shows the path to the page you select. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=309 src="http://www.getdotnetcode.com/nexDotNet/020029Build_ASP.NET_Navigation_System_Pt3/SiteMapPathControl.jpg" width=577 border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;B&gt;About the ASP.NET SiteMapPath Class&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The SiteMapPath control is a site navigation control that reflects data provided by the SiteMap object. The SiteMapPath class displays a set of text or image hyperlinks that enable users to more easily navigate a Web site, while taking a minimal amount of page space. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The SiteMapPath control provides a space-saving way to easily navigate a site and serves as a point of reference for where the currently displayed page is within a site. This type of control is commonly called a breadcrumb, or eyebrow, because it displays a hierarchical path of hyperlinked page names that provides an escape up the hierarchy of pages from the current location. SiteMapDataSource.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;For more information:&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.sitemap.aspx"&gt;&lt;FONT size=2&gt;SiteMap Class&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx"&gt;&lt;FONT size=2&gt;Menu Class&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.sitemappath.aspx"&gt;&lt;FONT size=2&gt;SiteMapPath Class&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;mike mcintyre &lt;A href="http://www.getdotnetcode.com/"&gt;http://www.getdotnetcode.com&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;/DIV&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8270.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>How To Use Lazy Initialization VB.NET and Visual Basic 2005 Part Two</title><link>http://blogs.vbcity.com/mcintyre/archive/2007/01/30/8169.aspx</link><pubDate>Tue, 30 Jan 2007 07:10:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2007/01/30/8169.aspx</guid><description>&lt;FONT size=1&gt;Source Code: &lt;/FONT&gt;&lt;A href="http://www.getdotnetcode.com/nexDotNet/030015Lazy_Initialization_VB2005_Pt2/Lazy_Initialization_VB2005_Pt2.htm"&gt;&lt;FONT size=1&gt;How To Use Lazy Initialization VB.NET and Visual Basic 2005 Pt2&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=4&gt;How To Use Lazy Initialization VB.NET and Visual Basic 2005 Part Two&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;
&lt;DIV id=globalWrapper&gt;
&lt;DIV id=column-content&gt;
&lt;DIV id=content&gt;
&lt;DIV id=bodyContent&gt;&lt;FONT size=2&gt;This is part two of a two part article and source code which explains the lazy initialization pattern and how to implement it in an &lt;U&gt;order entry scenario&lt;/U&gt; with VB.NET and Visual Basic 2005. In object-oriented programming (OOP), lazy initialization is the strategy of improving application performance by delaying the creation of an object, the calculation of a value, or some other process until the first time the object is needed. &lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;Click to read part one -&amp;gt; &lt;A href="http://www.getdotnetcode.com/nexDotNet/030009LazyInitializationVB2005Pt1/LazyInitializationVB2005Pt1.htm"&gt;Part 1&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;In part two, ADO.NET code is implemented for the Customer class' lazy initialization processes to load orders and order lines from a database.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;Example Application Screen Shot&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.getdotnetcode.com/nexDotNet/030015Lazy_Initialization_VB2005_Pt2/LazyInitializationPart2.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The example application loads a list of customers from the Northwind database.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;When a user clicks the row header for a customer row, a Customer object is created.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;When the user clicks the LoadOrderLines button the the Customer object loads the customers orders and orders lines.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Customer Class from Part 2 Source Code&lt;/B&gt;&lt;/P&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf11 ' Example will use the .NET 2.0 Generic List(Of T) type\par ??' to implement the Order and OrderLine collections.\par ??\cf2 Imports\cf0  System.Collections.Generic\par ??\par ??\cf2 Public\cf0  \cf2 Class\cf0  Customer\par ??\par ??    \cf11 ' Name field.\par ??\cf0     \cf2 Private\cf0  m_Name \cf2 As\cf0  \cf2 String\par ??\cf0     \cf11 ' Name property.\par ??\cf0     \cf2 Public\cf0  \cf2 Property\cf0  Name() \cf2 As\cf0  \cf2 String\par ??\cf0         \cf2 Get\par ??\cf0             \cf2 Return\cf0  \cf2 Me\cf0 .m_Name\par ??        \cf2 End\cf0  \cf2 Get\par ??\cf0         \cf2 Set\cf0 (\cf2 ByVal\cf0  value \cf2 As\cf0  \cf2 String\cf0 )\par ??            \cf2 Me\cf0 .m_Name = value\par ??        \cf2 End\cf0  \cf2 Set\par ??\cf0     \cf2 End\cf0  \cf2 Property\par ??\par ??\cf0     \cf11 ' ID field.\par ??\cf0     \cf2 Private\cf0  m_ID \cf2 As\cf0  \cf2 Integer\par ??\cf0     \cf11 ' ID property.\par ??\cf0     \cf2 Public\cf0  \cf2 Property\cf0  ID() \cf2 As\cf0  \cf2 Integer\par ??\cf0         \cf2 Get\par ??\cf0             \cf2 Return\cf0  \cf2 Me\cf0 .m_ID\par ??        \cf2 End\cf0  \cf2 Get\par ??\cf0         \cf2 Set\cf0 (\cf2 ByVal\cf0  value \cf2 As\cf0  \cf2 Integer\cf0 )\par ??            \cf2 Me\cf0 .m_ID = value\par ??        \cf2 End\cf0  \cf2 Set\par ??\cf0     \cf2 End\cf0  \cf2 Property\par ??\par ??\cf0     \cf11 ' Orders field.\par ??\cf0     \cf11 ' Intialized to nothing when Customer object is created.\par ??\cf0     \cf2 Private\cf0  m_Orders \cf2 As\cf0  List(\cf2 Of\cf0  CustomerOrder) = \cf2 Nothing\par ??\par ??\cf0     \cf11 ' Lazy initialization flag for Orders collection.\par ??\cf0     \cf2 Private\cf0  ordersLoaded \cf2 As\cf0  \cf2 Boolean\cf0  = \cf2 False\par ??\par ??\cf0     \cf11 ' Orders property.\par ??\cf0     \cf2 Public\cf0  \cf2 Property\cf0  Orders() \cf2 As\cf0  List(\cf2 Of\cf0  CustomerOrder)\par ??        \cf2 Get\par ??\cf0             \cf11 ' Lazy intialization code for Orders.\par ??\cf0             \cf2 If\cf0  \cf2 Not\cf0  ordersLoaded \cf2 Then\par ??\cf0                 \cf11 ' Load orders here. (Will be done in part two.)\par ??\cf0                 \cf2 Me\cf0 .ordersLoaded = \cf2 True\par ??\cf0             \cf2 End\cf0  \cf2 If\par ??\cf0             \cf2 Return\cf0  \cf2 Me\cf0 .m_Orders\par ??        \cf2 End\cf0  \cf2 Get\par ??\cf0         \cf2 Set\cf0 (\cf2 ByVal\cf0  value \cf2 As\cf0  List(\cf2 Of\cf0  CustomerOrder))\par ??            \cf2 Me\cf0 .m_Orders = value\par ??        \cf2 End\cf0  \cf2 Set\par ??\cf0     \cf2 End\cf0  \cf2 Property\par ??\par ??\par ??\cf0     \cf11 ' OrderLines field.\par ??\cf0     \cf11 ' Intialized to nothing when Customer object is created.\par ??\cf0     \cf2 Private\cf0  m_OrderLines \cf2 As\cf0  List(\cf2 Of\cf0  OrderLine) = \cf2 Nothing\par ??\par ??\cf0     \cf11 ' Lazy initialization flag for OrderLines collection.\par ??\cf0     \cf2 Private\cf0  ordersLinesLoaded \cf2 As\cf0  \cf2 Boolean\cf0  = \cf2 False\par ??\par ??\cf0     \cf11 ' OrderLines property.\par ??\cf0     \cf2 Public\cf0  \cf2 Property\cf0  OrderLines() \cf2 As\cf0  List(\cf2 Of\cf0  OrderLine)\par ??        \cf2 Get\par ??\cf0             \cf11 ' Lazy initialization code.\par ??\cf0             \cf2 If\cf0  \cf2 Not\cf0  \cf2 Me\cf0 .ordersLinesLoaded \cf2 Then\par ??\cf0                 \cf11 ' Load order lines here. (Will be done in part two."\par ??\cf0                 \cf2 Me\cf0 .ordersLinesLoaded = \cf2 True\par ??\cf0             \cf2 End\cf0  \cf2 If\par ??\cf0             \cf2 Return\cf0  \cf2 Me\cf0 .m_OrderLines\par ??        \cf2 End\cf0  \cf2 Get\par ??\cf0         \cf2 Set\cf0 (\cf2 ByVal\cf0  value \cf2 As\cf0  List(\cf2 Of\cf0  OrderLine))\par ??            \cf2 Me\cf0 .m_OrderLines = value\par ??        \cf2 End\cf0  \cf2 Set\par ??\cf0     \cf2 End\cf0  \cf2 Property\par ??\par ??End\cf0  \cf2 Class\par ??\par ??Public\cf0  \cf2 Class\cf0  CustomerOrder\par ??    \cf11 ' Will implement in part two.\par ??\cf2 End\cf0  \cf2 Class\par ??\par ??\par ??Public\cf0  \cf2 Class\cf0  OrderLine\par ??    \cf11 ' Will implement in part two.\par ??\cf2 End\cf0  \cf2 Class}
--&gt;The customer class' LoadOrders and LoadOrderLines methods are implemented. 
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt; Customer&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Name field.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; m_Name &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Name property.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; Name() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_Name&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_Name = value&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' ID field.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; m_ID &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' ID property.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; ID() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_ID&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_ID = value&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Constructor&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt;()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Parameterless constructor made private so only&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' a parameterized constructor can be called.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; name &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; id &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.Name = Name&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ID = id&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Orders field.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Intialized to nothing when Customer object is created.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; m_CustomerOrders &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; CustomerOrder)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Lazy initialization flag for Orders collection.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; ordersLoaded &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Orders property.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; CustomerOrders() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; CustomerOrder)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Lazy intialization code for Orders.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Not&lt;/SPAN&gt; ordersLoaded &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.LoadOrders()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_CustomerOrders&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; CustomerOrder))&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_CustomerOrders = value&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' OrderLines field.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Intialized to nothing when Customer object is created.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; m_OrderLines &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; OrderLine)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Lazy initialization flag for OrderLines collection.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; ordersLinesLoaded &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' OrderLines property.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; OrderLines() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; OrderLine)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Lazy initialization code.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Not&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ordersLinesLoaded &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ordersLinesLoaded = &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_OrderLines&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; OrderLine))&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_OrderLines = value&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; LoadOrders()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Load customers orders here.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theNorthwindDataSet &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; NorthwindDataSet&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; NorthwindDataSetTableAdapters.OrdersTableAdapter&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x.FillByCustomerId(theNorthwindDataSet.Orders, &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ID)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Each&lt;/SPAN&gt; row &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; NorthwindDataSet.OrdersRow &lt;SPAN style="COLOR: blue"&gt;In&lt;/SPAN&gt; theNorthwindDataSet.Orders&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_CustomerOrders.Add(&lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; CustomerOrder(row.OrderID, row.CustomerID, row.OrderDate))&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Next&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ordersLoaded = &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.LoadOrderLines()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; LoadOrderLines()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Load orderLines here.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theNorthwindDataSet &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; NorthwindDataSet&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; x &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; NorthwindDataSetTableAdapters.Order_DetailsTableAdapter&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Each&lt;/SPAN&gt; item &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; CustomerOrder &lt;SPAN style="COLOR: blue"&gt;In&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_CustomerOrders&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x.FillByOrderId(theNorthwindDataSet.Order_Details, item.OrderID)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Each&lt;/SPAN&gt; order_detail &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; NorthwindDataSet.Order_DetailsRow &lt;SPAN style="COLOR: blue"&gt;In&lt;/SPAN&gt; theNorthwindDataSet.Order_Details&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.m_OrderLines.Add(&lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; OrderLine(order_detail.OrderID, order_detail.ProductID, order_detail.UnitPrice))&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Next&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Next&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ordersLinesLoaded = &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Overrides&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt; ToString() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ID &amp;amp; &lt;SPAN style="COLOR: maroon"&gt;" "&lt;/SPAN&gt; &amp;amp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.Name&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;mike mcintyre &lt;A href="http://www.getdotnetcode.com/"&gt;http://www.getdotnetcode.com&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8169.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mike McIntyre [MVP Visual Basic]</dc:creator><title>How To Compare Two Files using HMACSHA1 with VB.NET or VB2005</title><link>http://blogs.vbcity.com/mcintyre/archive/2007/01/23/8164.aspx</link><pubDate>Tue, 23 Jan 2007 11:53:00 GMT</pubDate><guid>http://blogs.vbcity.com/mcintyre/archive/2007/01/23/8164.aspx</guid><description>&lt;FONT size=1&gt;Source Code: &lt;/FONT&gt;&lt;A href="http://www.getdotnetcode.com/nexDotNet/030012Compare_Two_Files_HMACSHA1_VB_2005/Compare_Two_Files_HMACSHA1_VB_2005.htm"&gt;&lt;FONT size=1&gt;How To Compare Two Files using HMACSHA1 with VB.NET or VB2005&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=4&gt;How To Compare Two Files using HMACSHA1 with VB.NET or VB2005&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;&lt;FONT size=2&gt;This article is similar to the article &lt;/FONT&gt;&lt;A class=MostPopularItemText id=HowToListing_productList__ctl1_HyperLink1 href="http://www.getdotnetcode.com/nexDotNet/030010Compare_Two_Files_VB_2005/Compare_Two_Files_VB_2005.htm" target=_blank&gt;&lt;FONT size=2&gt;How To Compare Two Files with VB.NET and VB2005&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The difference is this file comparison article and source code use the .NET System.Security.Cryptography HMACSHA1 Class to compare two files. The suggestion to use HMACSHA1 was made by reader Jim Parzych.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;In tests I conducted, the HMACSHA1 class provided better performance than the byte-by-byte comparison in the first article.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The file comparison looks at file paths, file lengths, and file contents. &lt;B&gt;NOTE:&lt;/B&gt; While source code for VB.NET is not provided, the code included in this article will work with VB.NET too. Be sure to Import System.IO.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;Application Screen Shot&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;The source code includes a Windows Forms application.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=228 src="http://getdotnetco.web119.discountasp.net/nexDotNet/030010Compare_Two_Files_VB_2005/CompareTwoFiles.jpg" width=396 border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;B&gt;&lt;FONT size=2&gt;Source Code Excerpt&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;After a user makes two file selections and clicks the 'Compare Files' button, the CompareFiles function in the source code performs the file comparison.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;First CompareFiles compares the path to file one to the path to file two.&amp;nbsp; If they are the same, file one and file two are the same.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Next, CompareFiles compares the length of file one to the length of file two.&amp;nbsp; If they are different the files are not equal.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Finally, if file paths are different and the length of file one and file two are the same, CompareFiles compares the contents of file one to file two using hashes created by a &lt;B&gt;HMACSHA1&lt;/B&gt; object. If the bytes in file one are equal to the bytes in file two, the files are equal.&lt;/FONT&gt;&lt;/P&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20    \cf2 Private\cf0  \cf2 Function\cf0  CompareFiles(\cf2 ByVal\cf0  filePathOne \cf2 As\cf0  \cf2 String\cf0 , \cf2 ByVal\cf0  filePathTwo \cf2 As\cf0  \cf2 String\cf0 ) \cf2 As\cf0  \cf2 Boolean\par ??\par ??\cf0         \cf2 Dim\cf0  fileOneByte \cf2 As\cf0  \cf2 Integer\par ??\cf0         \cf2 Dim\cf0  fileTwoByte \cf2 As\cf0  \cf2 Integer\par ??\par ??\cf0         \cf2 Dim\cf0  fileOneStream \cf2 As\cf0  FileStream\par ??        \cf2 Dim\cf0  fileTwoStream \cf2 As\cf0  FileStream\par ??\par ??        \cf11 ' If user has selected the same file as file one and file two....\par ??\cf0         \cf2 If\cf0  (filePathOne = filePathTwo) \cf2 Then\par ??\cf0             \cf11 ' Files are the same.\par ??\cf0             \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are the same; file one is file two."\par ??\cf0             \cf2 Return\cf0  \cf2 True\par ??\cf0         \cf2 End\cf0  \cf2 If\par ??\par ??\cf0         \cf11 ' Open a FileStream for each file.\par ??\cf0         fileOneStream = \cf2 New\cf0  FileStream(filePathOne, FileMode.Open)\par ??        fileTwoStream = \cf2 New\cf0  FileStream(filePathTwo, FileMode.Open)\par ??\par ??        \cf11 ' If the files are not the same length...\par ??\cf0         \cf2 If\cf0  (fileOneStream.Length &amp;lt;&amp;gt; fileTwoStream.Length) \cf2 Then\par ??\cf0             fileOneStream.Close()\par ??            fileTwoStream.Close()\par ??            \cf11 ' File's are not equal.\par ??\cf0             \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are not the same length; they are not equal."\par ??\cf0             \cf2 Return\cf0  \cf2 False\par ??\cf0         \cf2 End\cf0  \cf2 If\par ??\par ??\cf0         \cf2 Dim\cf0  areFilesEqual \cf2 As\cf0  \cf2 Boolean\cf0  = \cf2 True\par ??\par ??\cf0         \cf11 ' Loop through bytes in the files until\par ??\cf0         \cf11 '  a byte in file one &amp;lt;&amp;gt; a byte in file two\par ??\cf0         \cf11 ' OR\par ??\cf0         \cf11 '  end of the file one is reached.\par ??\cf0         \cf2 Do\par ??\cf0             \cf11 ' Read one byte from each file.\par ??\cf0             fileOneByte = fileOneStream.ReadByte()\par ??            fileTwoByte = fileTwoStream.ReadByte()\par ??            \cf2 If\cf0  fileOneByte &amp;lt;&amp;gt; fileTwoByte \cf2 Then\par ??\cf0                 \cf11 ' Files are not equal; byte in file one &amp;lt;&amp;gt; byte in file two.\par ??\cf0                 \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are not equal; contents are different."\par ??\cf0                 areFilesEqual = \cf2 False\par ??\cf0                 \cf2 Exit\cf0  \cf2 Do\par ??\cf0             \cf2 End\cf0  \cf2 If\par ??\cf0         \cf2 Loop\cf0  \cf2 While\cf0  (fileOneByte &amp;lt;&amp;gt; -1)\par ??\par ??        \cf11 ' Close the FileStreams.\par ??\cf0         fileOneStream.Close()\par ??        fileTwoStream.Close()\par ??\par ??        \cf2 Return\cf0  areFilesEqual\par ??\par ??    \cf2 End\cf0  \cf2 Function}
--&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 Private\cf0  \cf2 Function\cf0  CompareFiles(\cf2 ByVal\cf0  filePathOne \cf2 As\cf0  \cf2 String\cf0 , \cf2 ByVal\cf0  filePathTwo \cf2 As\cf0  \cf2 String\cf0 ) \cf2 As\cf0  \cf2 Boolean\par ??\par ??\cf0         \cf11 ' If user has selected the same file as file one and file two..\par ??\cf0         \cf2 If\cf0  (filePathOne = filePathTwo) \cf2 Then\par ??\cf0             \cf11 ' Files are the same.\par ??\cf0             \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are the same; file one is file two."\par ??\cf0             \cf2 Return\cf0  \cf2 True\par ??\cf0         \cf2 End\cf0  \cf2 If\par ??\par ??\par ??\cf0         \cf11 ' // User selected two different files; Compare length of file one to file two.\par ??\cf0         \cf2 Dim\cf0  fileOneStream \cf2 As\cf0  FileStream\par ??        \cf2 Dim\cf0  fileTwoStream \cf2 As\cf0  FileStream\par ??\par ??        \cf11 ' Open a FileStream for each file.\par ??\cf0         fileOneStream = \cf2 New\cf0  FileStream(filePathOne, FileMode.Open)\par ??        fileTwoStream = \cf2 New\cf0  FileStream(filePathTwo, FileMode.Open)\par ??\par ??        \cf11 ' If the files are not the same length...\par ??\cf0         \cf2 If\cf0  (fileOneStream.Length &amp;lt;&amp;gt; fileTwoStream.Length) \cf2 Then\par ??\cf0             fileOneStream.Close()\par ??            fileTwoStream.Close()\par ??            \cf11 ' File's are not equal.\par ??\cf0             \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are not the same length; they are not equal."\par ??\cf0             \cf2 Return\cf0  \cf2 False\par ??\cf0         \cf2 Else\par ??\cf0             fileOneStream.Close()\par ??            fileTwoStream.Close()\par ??        \cf2 End\cf0  \cf2 If\par ??\par ??\par ??\cf0         \cf11 ' // Files are the same length; compare file contents using .NET HMACSHA1 Class\par ??\cf0         \cf2 Dim\cf0  fileOneHash \cf2 As\cf0  \cf2 Byte\cf0 () = ComputeFileHashUsingHMACSHA1(filePathOne)\par ??        \cf2 Dim\cf0  fileTwoHash \cf2 As\cf0  \cf2 Byte\cf0 () = ComputeFileHashUsingHMACSHA1(filePathTwo)\par ??\par ??        \cf2 Dim\cf0  areFilesEqual \cf2 As\cf0  \cf2 Boolean\cf0  = \cf2 True\par ??\par ??\cf0         \cf11 ' Make a byte-by-byte comparrison of file one's hash to file two's hash.\par ??\cf0         \cf2 For\cf0  i \cf2 As\cf0  \cf2 Integer\cf0  = 0 \cf2 To\cf0  UBound(fileOneHash)\par ??            \cf11 ' If a byte from file one is not equal to a byte from file two..\par ??\cf0             \cf2 If\cf0  (fileOneHash(i) &amp;lt;&amp;gt; fileTwoHash(i)) \cf2 Then\par ??\cf0                 \cf11 ' Files are not equal; byte in file one hash &amp;lt;&amp;gt; byte in file two hash.\par ??\cf0                 \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are not equal; contents are different."\par ??\cf0                 areFilesEqual = \cf2 False\par ??\cf0                 \cf2 Exit\cf0  \cf2 For\par ??\cf0             \cf2 End\cf0  \cf2 If\par ??\par ??\cf0         \cf2 Next\par ??\par ??\cf0         \cf11 ' // Message user and return areFilesEqual\par ??\cf0         \cf2 If\cf0  areFilesEqual \cf2 Then\par ??\cf0             \cf11 ' Files are equal; bytes in file one hash = bytes in file two hash.\par ??\cf0             \cf2 Me\cf0 .ResultsRichTextBox.Text = \cf13 "Files are equal; contents are the same."\par ??\cf0             areFilesEqual = \cf2 False\par ??\cf0         \cf2 End\cf0  \cf2 If\par ??\par ??\cf0         \cf2 Return\cf0  areFilesEqual\par ??\par ??    \cf2 End\cf0  \cf2 Function\par ??\par ??\cf0     \cf2 Public\cf0  \cf2 Function\cf0  ComputeFileHashUsingHMACSHA1(\cf2 ByVal\cf0  filePath \cf2 As\cf0  \cf2 String\cf0 ) \cf2 As\cf0  \cf2 Byte\cf0 ()\par ??        \cf11 ' Declare variable named theHMACSHA1 of type HMACSHA1.\par ??\cf0         \cf2 Dim\cf0  theHMACSHA1 \cf2 As\cf0  HMACSHA1\par ??\par ??        \cf11 ' Declare variable named theKeyValue of type Byte().\par ??\cf0         \cf2 Dim\cf0  theKeyValue \cf2 As\cf0  \cf2 Byte\cf0 ()\par ??\par ??        \cf11 ' Declare variable named theHashValue of type Byte().\par ??\cf0         \cf2 Dim\cf0  theHashValue \cf2 As\cf0  \cf2 Byte\cf0 ()\par ??\par ??        \cf11 ' Declare variable named theInStream of type Stream.\par ??\cf0         \cf2 Dim\cf0  theInStream \cf2 As\cf0  Stream\par ??\par ??        \cf11 ' Call the UnicodeEncoding class' shared GetBytes method to initialize theKeyValue object.\par ??\cf0         theKeyValue = (\cf2 New\cf0  System.Text.UnicodeEncoding).GetBytes(\cf13 "HashingKey"\cf0 )\par ??\par ??        \cf11 ' Call the HMACSHA1 class' constructor method to initialize theKeyValue object. \par ??\cf0         theHMACSHA1 = \cf2 New\cf0  HMACSHA1(theKeyValue, \cf2 True\cf0 )\par ??\par ??        \cf11 ' Open theInStream. \par ??\cf0         theInStream = \cf2 New\cf0  FileStream(filePath, FileMode.Open, FileAccess.Read)\par ??\par ??        \cf11 ' Calculate theHashValue.\par ??\cf0         theHashValue = theHMACSHA1.ComputeHash(theInStream)\par ??\par ??        \cf11 ' Close theInStream.\par ??\cf0         theInStream.Close()\par ??\par ??        \cf11 ' Return theHashValue.\par ??\cf0         \cf2 Return\cf0  theHashValue\par ??\par ??    \cf2 End\cf0  \cf2 Function\par ??}
--&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt; CompareFiles(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; filePathOne &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; filePathTwo &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' If user has selected the same file as file one and file two..&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; (filePathOne = filePathTwo) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Files are the same.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ResultsRichTextBox.Text = &lt;SPAN style="COLOR: maroon"&gt;"Files are the same; file one is file two."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' // User selected two different files; Compare length of file one to file two.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; fileOneStream &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; FileStream&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; fileTwoStream &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; FileStream&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Open a FileStream for each file.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileOneStream = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; FileStream(filePathOne, FileMode.Open)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileTwoStream = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; FileStream(filePathTwo, FileMode.Open)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' If the files are not the same length...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; (fileOneStream.Length &amp;lt;&amp;gt; fileTwoStream.Length) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileOneStream.Close()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileTwoStream.Close()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' File's are not equal.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ResultsRichTextBox.Text = &lt;SPAN style="COLOR: maroon"&gt;"Files are not the same length; they are not equal."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Else&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileOneStream.Close()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileTwoStream.Close()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' // Files are the same length; compare file contents using .NET HMACSHA1 Class&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; fileOneHash &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Byte&lt;/SPAN&gt;() = ComputeFileHashUsingHMACSHA1(filePathOne)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; fileTwoHash &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Byte&lt;/SPAN&gt;() = ComputeFileHashUsingHMACSHA1(filePathTwo)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; areFilesEqual &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Make a byte-by-byte comparrison of file one's hash to file two's hash.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt; i &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Integer&lt;/SPAN&gt; = 0 &lt;SPAN style="COLOR: blue"&gt;To&lt;/SPAN&gt; UBound(fileOneHash)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' If a byte from file one is not equal to a byte from file two..&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; (fileOneHash(i) &amp;lt;&amp;gt; fileTwoHash(i)) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: green"&gt;' Files are not equal; byte in file one hash &amp;lt;&amp;gt; byte in file two hash.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ResultsRichTextBox.Text = &lt;SPAN style="COLOR: maroon"&gt;"Files are not equal; contents are different."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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; areFilesEqual = &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&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 style="COLOR: blue"&gt;Exit&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;For&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Next&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' // Message user and return areFilesEqual&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; areFilesEqual &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Files are equal; bytes in file one hash = bytes in file two hash.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Me&lt;/SPAN&gt;.ResultsRichTextBox.Text = &lt;SPAN style="COLOR: maroon"&gt;"Files are equal; contents are the same."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; areFilesEqual = &lt;SPAN style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; areFilesEqual&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt; ComputeFileHashUsingHMACSHA1(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; filePath &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Byte&lt;/SPAN&gt;()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Declare variable named theHMACSHA1 of type HMACSHA1.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theHMACSHA1 &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; HMACSHA1&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Declare variable named theKeyValue of type Byte().&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theKeyValue &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Byte&lt;/SPAN&gt;()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Declare variable named theHashValue of type Byte().&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theHashValue &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Byte&lt;/SPAN&gt;()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Declare variable named theInStream of type Stream.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; theInStream &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Stream&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Call the UnicodeEncoding class' shared GetBytes method to initialize theKeyValue object.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; theKeyValue = (&lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; System.Text.UnicodeEncoding).GetBytes(&lt;SPAN style="COLOR: maroon"&gt;"HashingKey"&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Call the HMACSHA1 class' constructor method to initialize theKeyValue object. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; theHMACSHA1 = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; HMACSHA1(theKeyValue, &lt;SPAN style="COLOR: blue"&gt;True&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Open theInStream. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; theInStream = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; FileStream(filePath, FileMode.Open, FileAccess.Read)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Calculate theHashValue.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; theHashValue = theHMACSHA1.ComputeHash(theInStream)&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Close theInStream.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; theInStream.Close()&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;' Return theHashValue.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; theHashValue&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 8pt; MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;!--EndFragment--&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT size=2&gt;For more information:&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemiofilestreamclasstopic.asp"&gt;&lt;FONT size=2&gt;FileStream Class&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/system.security.cryptography.hmacsha1(VS.80).aspx"&gt;&lt;FONT size=2&gt;HMACSHA1 Class&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;mike mcintyre &lt;A href="http://www.getdotnetcode.com/"&gt;http://www.getdotnetcode.com&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/mcintyre/aggbug/8164.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>