<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>PK Software (OLD Blog) - see http://www.pksoftware.net/devblog/</title>
    <link>http://www.pksoftware.net/blog/</link>
    <description>My blog has moved to http://www.pksoftware.net/devblog/ </description>
    <language>en-us</language>
    <copyright>Paul Kohler</copyright>
    <lastBuildDate>Fri, 24 Oct 2008 11:15:55 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>paul@pksoftware.net</managingEditor>
    <webMaster>paul@pksoftware.net</webMaster>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=efbc462e-90e5-497f-a097-d8042a9557fe</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,efbc462e-90e5-497f-a097-d8042a9557fe.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">Just a reminder, I am still getting a lot of hits on this one....</font>
        </p>
        <p>
          <font size="3">Blog moved to: </font>
          <a href="http://www.pksoftware.net/devblog/">
            <strong>
              <font color="#ff0000" size="4">http://www.pksoftware.net/devblog/</font>
            </strong>
          </a>
          <font size="3">
          </font>
        </p>
        <p>
          <strong>
            <font size="3">:-)</font>
          </strong>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=efbc462e-90e5-497f-a097-d8042a9557fe" />
      </body>
      <title>Reminder... My blog has moved to http://www.pksoftware.net/devblog/</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,efbc462e-90e5-497f-a097-d8042a9557fe.aspx</guid>
      <link>http://www.pksoftware.net/blog/2008/10/24/Reminder+My+Blog+Has+Moved+To+Httpwwwpksoftwarenetdevblog.aspx</link>
      <pubDate>Fri, 24 Oct 2008 11:15:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font size=3&gt;Just a reminder, I am still getting a lot of hits on this one....&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;Blog moved to: &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/"&gt;&lt;strong&gt;&lt;font color=#ff0000 size=4&gt;http://www.pksoftware.net/devblog/&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;font size=3&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size=3&gt;:-)&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=efbc462e-90e5-497f-a097-d8042a9557fe" /&gt;</description>
      <category>Articles;Coding;Coding/CodeDom;Coding/Work Arrounds;Links;NUnitForms;Products;Products/Behaviour to Unit Test;Products/Mini SQL Query;Products/Verse Popper;SOE;Software Distribution;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=f08b331c-885c-4c65-a641-f1fa85daf4ce</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,f08b331c-885c-4c65-a641-f1fa85daf4ce.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My blog has moved... to <a href="http://www.pksoftware.net/devblog/">http://www.pksoftware.net/devblog/</a> and
the RSS feed is now <a href="http://www.pksoftware.net/devblog/syndication.axd">http://www.pksoftware.net/devblog/syndication.axd</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=f08b331c-885c-4c65-a641-f1fa85daf4ce" />
      </body>
      <title>Blog has moved - but not far!</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,f08b331c-885c-4c65-a641-f1fa85daf4ce.aspx</guid>
      <link>http://www.pksoftware.net/blog/2008/03/11/Blog+Has+Moved+But+Not+Far.aspx</link>
      <pubDate>Tue, 11 Mar 2008 12:10:58 GMT</pubDate>
      <description>&lt;p&gt;
My blog has moved... to &lt;a href="http://www.pksoftware.net/devblog/"&gt;http://www.pksoftware.net/devblog/&lt;/a&gt;&amp;nbsp;and
the RSS feed is now &lt;a href="http://www.pksoftware.net/devblog/syndication.axd"&gt;http://www.pksoftware.net/devblog/syndication.axd&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=f08b331c-885c-4c65-a641-f1fa85daf4ce" /&gt;</description>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=8e67288a-52f3-414c-9a6f-ed41a1117dab</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,8e67288a-52f3-414c-9a6f-ed41a1117dab.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Last week I slipped an update in to <b><a href="http://www.pksoftware.net/MiniSqlQuery/">Mini
SQL Query</a></b> - version 0.9.37.<br />
Just minor fixes, updates, a <a href="http://www.pksoftware.net/MiniSqlQuery/Help/">quick
start help page</a> and I added a "Templates" tool window plugin...<br /><p></p><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=8e67288a-52f3-414c-9a6f-ed41a1117dab" /></body>
      <title>Slight upgrade to Mini SQL Query</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,8e67288a-52f3-414c-9a6f-ed41a1117dab.aspx</guid>
      <link>http://www.pksoftware.net/blog/2008/03/03/Slight+Upgrade+To+Mini+SQL+Query.aspx</link>
      <pubDate>Mon, 03 Mar 2008 10:30:11 GMT</pubDate>
      <description>Last week I slipped an update in to &lt;b&gt;&lt;a href="http://www.pksoftware.net/MiniSqlQuery/"&gt;Mini
SQL Query&lt;/a&gt;&lt;/b&gt; - version 0.9.37.&lt;br&gt;
Just minor fixes, updates, a &lt;a href="http://www.pksoftware.net/MiniSqlQuery/Help/"&gt;quick
start help page&lt;/a&gt; and I added a "Templates" tool window plugin...&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=8e67288a-52f3-414c-9a6f-ed41a1117dab" /&gt;</description>
      <category>Products;Products/Mini SQL Query</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=13c6f6d8-20cc-458a-a254-ff50355e0685</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,13c6f6d8-20cc-458a-a254-ff50355e0685.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Beta Release of Mini SQL Query</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,13c6f6d8-20cc-458a-a254-ff50355e0685.aspx</guid>
      <link>http://www.pksoftware.net/blog/2008/02/01/Beta+Release+Of+Mini+SQL+Query.aspx</link>
      <pubDate>Fri, 01 Feb 2008 02:43:45 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;&lt;strong&gt;Mini
SQL Query&lt;/strong&gt; is one of those tools that I have had in my &lt;em&gt;self coded toolbox&lt;/em&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; for
a long time now. Last year I almost released it to the public but a few things happened
and the release sadly didn't. My apologies to those that were waiting, I had plenty
of emails in the months to follow asking where the editor was!&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Well,
I finally uploaded the beta - see &lt;/font&gt;&lt;a href="http://www.pksoftware.net/MiniSqlQuery/"&gt;&lt;strong&gt;&lt;font face=Arial&gt;http://www.pksoftware.net/MiniSqlQuery/&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;font face=Arial&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font face=Arial color=#000000&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt" align=center&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face=Arial&gt;&amp;nbsp;&lt;img title="Mini SQL Query hitting an MSSQL database" src="http://www.pksoftware.net/blog/content/binary/msq-view-table.png" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt" align=center&gt;
&lt;strong&gt;Mini SQL Query&lt;/strong&gt; hitting an MSSQL database.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;font face=Arial&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;Make
sure you register so that when fixes or major releases are made you know – there is
also the &lt;/font&gt;&lt;a href="http://www.pksoftware.net/blog/SyndicationService.asmx/GetRssCategory?categoryName=Products%7CMini%20SQL%20Query"&gt;&lt;font face=Arial&gt;Mini
SQL Query product RSS feed&lt;/font&gt;&lt;/a&gt;&lt;font face=Arial&gt;). Keep in mind its &lt;em&gt;in no
way&lt;/em&gt;&amp;nbsp;intended as a replacement for Microsoft's "SQL Server Management Studio".
I use it for making quick queries or updates to my databases. I find it particularly
good for managing a remotely hosted database. I don't use it for modeling databases
etc but I do plan on making a bunch of plugins to help with quickly putting together
a &lt;strong&gt;NetTiers&lt;/strong&gt; focused database model.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;
&lt;o:p&gt;
&lt;font face=Arial color=#000000 size=3&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial&gt;&lt;img title="Mini SQL Query hitting an MS Access database with a table window floating" src="http://www.pksoftware.net/blog/content/binary/msq-dockable-windows.PNG" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt" align=center&gt;
&lt;strong&gt;Mini SQL Query&lt;/strong&gt; hitting an MS Access database with a table window
floating.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt" align=center&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Arial&gt;The
application itself it an exercise in &lt;strong&gt;minimalist coding&lt;/strong&gt;. I made use
of open source libraries such as the &lt;strong&gt;ICSharpTextEditor&lt;/strong&gt; giving lots
of edit functionality with little effort. I used &lt;strong&gt;Weifen Luo’s docking library&lt;/strong&gt; which
has been great (I need to track down the correct links etc will post later). The design
employs a &lt;em&gt;service model&lt;/em&gt; with &lt;em&gt;commands &lt;/em&gt;which keeps code nicely separated
and easily extendable (see the &lt;/font&gt;&lt;a href="http://www.pksoftware.net/MiniSqlQuery/Help/api/" target=_blank&gt;&lt;font face=Arial&gt;API
docs&lt;/font&gt;&lt;/a&gt;&lt;font face=Arial&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;on making
plugins if you have the geekish urge to!) The testing is done with a combination of
stubs and mocks (I use &lt;strong&gt;Rhino Mocks&lt;/strong&gt;, just love the style...)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;The whole
application was actually coded with &lt;strong&gt;Microsoft Visual C# Express Edition&lt;/strong&gt;.
I wanted to see what a hobby developer IDE could come up with.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;strong&gt;&lt;em&gt;Some
notes...&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;strong&gt;Multiple
Connection Types&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;One of
the main features is the fact that you can connect to pretty much any database so
long as you know the Provider type and connection string. I have only had MSSQL and
Access databases to test against so far but I might try and ressurect my Oracle instance
just to check out the schema details.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;Probaby
the main usability thing to keep in mind is that if you change the provider type and/or
the connection string you should hit the 'Refresh Database Connection' button/menu
item. The 'Database Inspector' gets reloaded at this point too.&amp;nbsp;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;&lt;strong&gt;Database
Inspector&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial color=#000000 size=3&gt;The inspector
window shows basic details that are taken from the DBConnection.GetSchema output.
I have noticed that some of the types for the access databases are not actually defined
and so come though as a number with a question mark (e.g. 130? with is actually a
variable string) .&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial size=3&gt;&lt;strong&gt;Settings Persistance&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial size=3&gt;There is none! I have
not worried about it to date but that will turn up in time.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial size=3&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;
&lt;span style="mso-ansi-language: EN-US"&gt;&lt;font face=Arial size=3&gt;Let me know what you
think, PK&amp;nbsp; :-)&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=13c6f6d8-20cc-458a-a254-ff50355e0685" /&gt;</description>
      <category>Products;Products/Mini SQL Query</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=321d2fd6-bec9-4de2-9501-d34115e7bd6a</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,321d2fd6-bec9-4de2-9501-d34115e7bd6a.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was working with the new MS MVC framework but with express, I used <a href="http://www.lazycoder.com/weblog/index.php/archives/2007/12/10/using-the-aspnet-mvc-framework-with-visual-web-developer-express" target="_blank">Lazycoders
post</a> as a helper to what lead to this template. I have put together a simple C#
project template for Visual Web Developer 2008 Express Edition. Just dump it into
your 
</p>
        <p>
  "(my docs)\Visual Studio 2008\Templates\<strong>ProjectTemplates</strong>\Visual
Web Developer"
</p>
        <p>
folder and choose “new website” etc (may need to restart the IDE to pick up the files).
</p>
        <p>
          <img src="http://www.pksoftware.net/blog/content/binary/mvc-1.Png" border="0" />
        </p>
        <p>
It puts together the basic structure using the "App_Code" restriction in the express
edition of the IDE (well, and some others...)
</p>
        <p>
          <img src="http://www.pksoftware.net/blog/content/binary/mvc-2.Png" border="0" />
        </p>
        <p>
 
</p>
        <p>
There is also a simple “view page” item template, drop this into 
</p>
        <p>
  "(my docs)\Visual Studio 2008\Templates\<strong>ItemTemplates</strong>\Visual
Web Developer"
</p>
        <p>
I did not worry about the controller (simgle page + simple change etc)...
</p>
        <p>
Merry Christmas! PK :-)
</p>
        <p>
 
</p>
        <p>
          <strong>Files:</strong>
        </p>
        <p>
        </p>
        <ul>
          <li>
            <a href="http://www.pksoftware.net/blog/content/binary/WebDevMvcAspNetSite.zip">WebDevMvcAspNetSite.zip
(8.73 KB)</a> (C# project template) 
</li>
          <li>
            <a href="http://www.pksoftware.net/blog/content/binary/MvcViewPage.zip">MvcViewPage.zip
(2.27 KB)</a> (C# item template)</li>
        </ul>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=321d2fd6-bec9-4de2-9501-d34115e7bd6a" />
      </body>
      <title>An MVC Project Template for Visual Web Developer 2008 Express</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,321d2fd6-bec9-4de2-9501-d34115e7bd6a.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/12/24/An+MVC+Project+Template+For+Visual+Web+Developer+2008+Express.aspx</link>
      <pubDate>Mon, 24 Dec 2007 03:09:14 GMT</pubDate>
      <description>&lt;p&gt;
I was working with the new MS MVC framework but with express, I used &lt;a href="http://www.lazycoder.com/weblog/index.php/archives/2007/12/10/using-the-aspnet-mvc-framework-with-visual-web-developer-express" target=_blank&gt;Lazycoders
post&lt;/a&gt; as a helper to what lead to this template. I have put together a simple C#
project template for Visual Web Developer 2008 Express Edition. Just dump it into
your 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; "(my docs)\Visual Studio 2008\Templates\&lt;strong&gt;ProjectTemplates&lt;/strong&gt;\Visual
Web Developer"
&lt;/p&gt;
&lt;p&gt;
folder and choose “new website” etc (may need to restart the IDE to pick up the files).
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/mvc-1.Png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
It puts together the basic structure using the "App_Code" restriction in the express
edition of the IDE (well, and some others...)
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/mvc-2.Png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
There is also a simple “view page” item template, drop this into 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; "(my docs)\Visual Studio 2008\Templates\&lt;strong&gt;ItemTemplates&lt;/strong&gt;\Visual
Web Developer"
&lt;/p&gt;
&lt;p&gt;
I did not worry about the controller (simgle page + simple change etc)...
&lt;/p&gt;
&lt;p&gt;
Merry Christmas! PK :-)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Files:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.pksoftware.net/blog/content/binary/WebDevMvcAspNetSite.zip"&gt;WebDevMvcAspNetSite.zip
(8.73 KB)&lt;/a&gt; (C# project template) 
&lt;li&gt;
&lt;a href="http://www.pksoftware.net/blog/content/binary/MvcViewPage.zip"&gt;MvcViewPage.zip
(2.27 KB)&lt;/a&gt;&amp;nbsp;(C# item template)&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=321d2fd6-bec9-4de2-9501-d34115e7bd6a" /&gt;</description>
      <category>Coding</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=5e2051cc-df44-415d-ac7f-4d027416e414</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,5e2051cc-df44-415d-ac7f-4d027416e414.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">It's common practice for developers to
make small "TODO" notes in code as they work for themselves or others to clarify at
some time...<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
TODO: confirm this business requirement...</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
TODO: make this better!</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
TODO: bread, butter, eggs and milk...</span><br /></span></p>
Issues can arise when the TODO's are not taken care of for whatever reason or get
lost in the mayhem of meeting deadlines. A worst case scenario could arise when there
is a production defect for an obscure situation and the maintenance programmer finds
something like this:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
TODO: Not sure if there are any more response codes for this one, check before release.</span></span></p>
Opps! Now that's expensive.<br />
Now I am not saying this is good or bad (!) practice - but what I have started to
do within my team is create either a <b>failing </b>or <b>ignored unit test</b> (depending
on the importance) marking what would normally be an innocent "TODO" item. The unit
test stays in the build as either a fail or ignore and does not drop off the radar. 
<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[Test]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Need_to_confirm_foo()<br />
{<br />
  Assert.Fail();<br />
}</span></p>
Or...<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[Test]<br />
[Ignore(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Confirmation
required from the business"</span>)]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> A_foo_only_has_a_bla()<br />
{<br />
}</span></p>
It's much harder to miss a bunch of ignored or failing unit tests before that production
release than some well hidden TODO comments!<br /><p>
 
</p><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=5e2051cc-df44-415d-ac7f-4d027416e414" /></body>
      <title>Tip - Use failing Unit Tests to mark your TODO Items</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,5e2051cc-df44-415d-ac7f-4d027416e414.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/10/31/Tip+Use+Failing+Unit+Tests+To+Mark+Your+TODO+Items.aspx</link>
      <pubDate>Wed, 31 Oct 2007 09:40:05 GMT</pubDate>
      <description>It's common practice for developers to make small "TODO" notes in code as they work for themselves or others to clarify at some time...&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
TODO: confirm this business requirement...&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
TODO: make this better!&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
TODO: bread, butter, eggs and milk...&lt;/span&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
Issues can arise when the TODO's are not taken care of for whatever reason or get
lost in the mayhem of meeting deadlines. A worst case scenario could arise when there
is a production defect for an obscure situation and the maintenance programmer finds
something like this:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
TODO: Not sure if there are any more response codes for this one, check before release.&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
Opps! Now that's expensive.&lt;br&gt;
Now I am not saying this is good or bad (!) practice - but what I have started to
do within my team is create either a &lt;b&gt;failing &lt;/b&gt;or &lt;b&gt;ignored unit test&lt;/b&gt; (depending
on the importance) marking what would normally be an innocent "TODO" item. The unit
test stays in the build as either a fail or ignore and does not drop off the radar. 
&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[Test]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Need_to_confirm_foo()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; Assert.Fail();&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
Or...&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[Test]&lt;br&gt;
[Ignore(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Confirmation
required from the business"&lt;/span&gt;)]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; A_foo_only_has_a_bla()&lt;br&gt;
{&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
It's much harder to miss a bunch of ignored or failing unit tests before that production
release than some well hidden TODO comments!&lt;br&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=5e2051cc-df44-415d-ac7f-4d027416e414" /&gt;</description>
      <category>Coding;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=01dbfdf0-aa7e-4827-b4fa-2723dec9adb2</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,01dbfdf0-aa7e-4827-b4fa-2723dec9adb2.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Scott Guthrie talks about Microsoft releasing the .Net framework source code later
this year.<br />
A very good move by Microsoft I think :-)
</p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=01dbfdf0-aa7e-4827-b4fa-2723dec9adb2" />
      </body>
      <title>Microsoft to Release the Source Code for the .NET Framework Libraries</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,01dbfdf0-aa7e-4827-b4fa-2723dec9adb2.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/10/04/Microsoft+To+Release+The+Source+Code+For+The+NET+Framework+Libraries.aspx</link>
      <pubDate>Thu, 04 Oct 2007 02:22:05 GMT</pubDate>
      <description>&lt;p&gt;
Scott Guthrie talks about Microsoft releasing the .Net framework source code later
this year.&lt;br&gt;
A very good move by Microsoft I think :-)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=01dbfdf0-aa7e-4827-b4fa-2723dec9adb2" /&gt;</description>
      <category>Coding;Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=74e669ee-3ef9-4348-8996-8b16b866aad1</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,74e669ee-3ef9-4348-8996-8b16b866aad1.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Make that version 1.0.0.3!<br /></p>
        <p>
I did not quite get this feature into the previous version and just posted the updates
in case I got busy.
</p>
        <p>
The big (and very useful) change for <em>build 3</em> is that you can "paste" <em>unit
test code</em> into the tool and the phrases will be extracted - if they use
underscores and the code is C# (sorry, minor bug, I'll fix that shortly!) In practice
I have found the underscore styke far more readable.
</p>
        <p>
For example, if you have the following unit test code, copy it to the clipboard...
</p>
        <p>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> Tests<br />
{<br />
    [TestFixture]<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> PersonEntityTests<br />
    {<br />
        [SetUp]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> TestSetUp()<br />
        {<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
...</span><br />
        }<br />
        <br />
        [Test]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span><strong>A_method_will_be_extracted_from_the_clipboard()</strong><br />
        {<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
asserts etc</span><br />
        }<br />
    }<br />
}<br /></span>
        </p>
...and use the new "<strong>Paste beaviours from clipboard</strong>" menu option (or <strong>ALT+F5</strong>)
and you get the method name extracted.<br /><p></p><p><img src="http://www.pksoftware.net/blog/content/binary/btut-past-code.png" border="0" /></p><p>
The full round trip. Whe you want to continue working on a unit test class you can
use this feature to get the current context of the testing... have fun! PK :-)
</p><p>
  <a href="http://www.pksoftware.net/BehaviourToUnitTest/"><strong>http://www.pksoftware.net/BehaviourToUnitTest/</strong></a></p><hr width="100%" size="2" /><i>Quick note - now at v1.0.0.2 - the main changes are:</i><ul><li><i>The use of the ICSharp.TextEditor for better editing</i></li><li><i>The defaults are C# with the underscore style</i></li><li><i>A few more word substitutions by default</i></li></ul><p><i>Enjoy!</i></p><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=74e669ee-3ef9-4348-8996-8b16b866aad1" /></body>
      <title>Behaviour Driven Unit Test Design Tool Updated</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,74e669ee-3ef9-4348-8996-8b16b866aad1.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/09/04/Behaviour+Driven+Unit+Test+Design+Tool+Updated.aspx</link>
      <pubDate>Tue, 04 Sep 2007 10:49:31 GMT</pubDate>
      <description>&lt;p&gt;
Make that version 1.0.0.3!&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I did not quite get this feature into the previous version and just posted the updates
in case I got busy.
&lt;/p&gt;
&lt;p&gt;
The big (and very useful) change for &lt;em&gt;build 3&lt;/em&gt; is that you can "paste" &lt;em&gt;unit
test code&lt;/em&gt; into the tool&amp;nbsp;and the phrases will be extracted - if they use
underscores and the code is C# (sorry, minor bug, I'll fix that shortly!) In practice
I have found the underscore styke far more readable.
&lt;/p&gt;
&lt;p&gt;
For example, if you have the following unit test code, copy it to the clipboard...
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; Tests&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixture]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; PersonEntityTests&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[SetUp]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; TestSetUp()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
...&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; &lt;strong&gt;A_method_will_be_extracted_from_the_clipboard()&lt;/strong&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
asserts etc&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
...and use the new "&lt;strong&gt;Paste beaviours from clipboard&lt;/strong&gt;" menu option (or &lt;strong&gt;ALT+F5&lt;/strong&gt;)
and you get the method name extracted.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/btut-past-code.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
The full round trip. Whe you want to continue working on a unit test class you can
use this feature to get the current context of the testing... have fun! PK :-)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &lt;a href="http://www.pksoftware.net/BehaviourToUnitTest/"&gt;&lt;strong&gt;http://www.pksoftware.net/BehaviourToUnitTest/&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;hr width="100%" size=2&gt;
&lt;i&gt;Quick note - now at v1.0.0.2 - the main changes are:&lt;/i&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;i&gt;The use of the ICSharp.TextEditor for better editing&lt;/i&gt; 
&lt;li&gt;
&lt;i&gt;The defaults are C# with the underscore style&lt;/i&gt; 
&lt;li&gt;
&lt;i&gt;A few more word substitutions by default&lt;/i&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=74e669ee-3ef9-4348-8996-8b16b866aad1" /&gt;</description>
      <category>Products;Products/Behaviour to Unit Test;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=e73cf1a0-95a9-4947-ac47-057b30b7f95a</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,e73cf1a0-95a9-4947-ac47-057b30b7f95a.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have uploaded a small development tool that I put together recently, its called
"Behaviour to Unit Test". Basically it converts code functionality from <em>plain
sentences</em> (or stories) into <em>unit test stub code</em>. You could also think
of it as a cure for TDD writers block!
</p>
        <p>
For an example of the usage, use the <strong>Generation</strong> -&gt; <strong>Fill
out example</strong> menu option and hit <strong>Convert</strong>. Basically it takes
a set of plain language behaviours for an object such as "person":
</p>
        <ul>
          <li>
Check that the default values of all string properties are empty 
</li>
          <li>
The ToString method renders the first and last names 
</li>
          <li>
If the date of birth is null, calculate age will return -1 
</li>
          <li>
If the date of birth is not null, calculate age will return a value</li>
        </ul>
        <p>
...and converts them into something like:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> NUnit.Framework;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> NUnit.Framework.SyntaxHelpers;<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> Tests<br />
{<br />
    [TestFixture]<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> PersonEntityTests<br />
    {<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span> PersonEntity
person;<br />
        <br />
        [SetUp]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> TestSetUp()<br />
        {<br />
            person <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> PersonEntity();<br />
        }<br />
        <br />
        [Test]<br />
        [Ignore(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Currently
only a unit test stub"</span>)]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> CheckThatTheDefaultValuesOfAllStringPropertiesAreEmpty()<br />
        {<br />
        }<br />
        <br />
        [Test]<br />
        [Ignore(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Currently
only a unit test stub"</span>)]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> TheToStringMethodRendersTheFirstAndLastNames()<br />
        {<br />
        }<br />
        <br />
        [Test]<br />
        [Ignore(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Currently
only a unit test stub"</span>)]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> IfTheDateOfBirthIsNullCalculateAgeWillReturnMinus1()<br />
        {<br />
        }<br />
        <br />
        [Test]<br />
        [Ignore(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Currently
only a unit test stub"</span>)]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> IfTheDateOfBirthIsNotNullCalculateAgeWillReturnAValue()<br />
        {<br />
        }<br />
    }<br />
}<br /></span>
        </p>
        <p>
There are C# and VB.NET templates for now. Check it out:
</p>
        <p>
  <a href="http://www.pksoftware.net/BehaviourToUnitTest/"><strong>http://www.pksoftware.net/BehaviourToUnitTest/</strong></a></p>
        <p>
My intention is to keep the tool small and simple. The main thing I want to add at
the moment is some load/save functionality and drop in the ICSharp.TextEditor for
more friendly editing...
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=e73cf1a0-95a9-4947-ac47-057b30b7f95a" />
      </body>
      <title>New Tool - Behaviour to Unit Test</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,e73cf1a0-95a9-4947-ac47-057b30b7f95a.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/08/27/New+Tool+Behaviour+To+Unit+Test.aspx</link>
      <pubDate>Mon, 27 Aug 2007 09:43:04 GMT</pubDate>
      <description>&lt;p&gt;
I have uploaded a small development tool that&amp;nbsp;I put together recently, its called
"Behaviour to Unit Test". Basically it converts code functionality from &lt;em&gt;plain
sentences&lt;/em&gt; (or stories) into &lt;em&gt;unit test stub code&lt;/em&gt;. You could also think
of it as a cure for TDD writers block!
&lt;/p&gt;
&lt;p&gt;
For an example of the usage, use the &lt;strong&gt;Generation&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Fill
out example&lt;/strong&gt; menu option and hit &lt;strong&gt;Convert&lt;/strong&gt;. Basically it takes
a set of plain language behaviours for an object such as "person":
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Check that the default values of all string properties are empty 
&lt;li&gt;
The ToString method renders the first and last names 
&lt;li&gt;
If the date of birth is null, calculate age will return -1 
&lt;li&gt;
If the date of birth is not null, calculate age will return a value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
...and converts them into something like:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; NUnit.Framework;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; NUnit.Framework.SyntaxHelpers;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; Tests&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixture]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; PersonEntityTests&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; PersonEntity
person;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[SetUp]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; TestSetUp()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;person &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; PersonEntity();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Ignore(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Currently
only a unit test stub"&lt;/span&gt;)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; CheckThatTheDefaultValuesOfAllStringPropertiesAreEmpty()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Ignore(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Currently
only a unit test stub"&lt;/span&gt;)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; TheToStringMethodRendersTheFirstAndLastNames()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Ignore(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Currently
only a unit test stub"&lt;/span&gt;)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; IfTheDateOfBirthIsNullCalculateAgeWillReturnMinus1()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Ignore(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Currently
only a unit test stub"&lt;/span&gt;)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; IfTheDateOfBirthIsNotNullCalculateAgeWillReturnAValue()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
There are C# and VB.NET templates for now. Check it out:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &lt;a href="http://www.pksoftware.net/BehaviourToUnitTest/"&gt;&lt;strong&gt;http://www.pksoftware.net/BehaviourToUnitTest/&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
My intention is to keep the tool small and simple. The main thing I want to add at
the moment is some load/save functionality and drop in the ICSharp.TextEditor for
more friendly editing...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=e73cf1a0-95a9-4947-ac47-057b30b7f95a" /&gt;</description>
      <category>Coding;Products;Products/Behaviour to Unit Test;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=6e3c894e-5ba9-4971-9d1e-4f15846e87a9</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,6e3c894e-5ba9-4971-9d1e-4f15846e87a9.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is just a quick heads up to say that I think the <a target="_blank" href="http://castleproject.org/">Castle
Project</a> rocks!
</p>
        <p>
I have been using it allot of late especially <a target="_blank" href="http://castleproject.org/activerecord/index.html">Active
Record</a>. I'll blog more detail later but it's what I have been looking for all
these years! Many time I have implemented simple subsets of the functionality that
Castle provides to help get the job done. Castle wraps up all those funky framework
fragments and more with a great "action pack" flavour to it in the form of <a target="_blank" href="http://castleproject.org/monorail/index.html">Mono
Rail</a> (i.e. 'ruby on rails' for .Net)
</p>
        <p>
Very cool  ;-)<br /></p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=6e3c894e-5ba9-4971-9d1e-4f15846e87a9" />
      </body>
      <title>A quick plug for Castle</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,6e3c894e-5ba9-4971-9d1e-4f15846e87a9.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/07/19/A+Quick+Plug+For+Castle.aspx</link>
      <pubDate>Thu, 19 Jul 2007 11:21:35 GMT</pubDate>
      <description>&lt;p&gt;
This is just a quick heads up to say that I think the &lt;a target="_blank" href="http://castleproject.org/"&gt;Castle
Project&lt;/a&gt; rocks!
&lt;/p&gt;
&lt;p&gt;
I have been using it allot of late especially &lt;a target="_blank" href="http://castleproject.org/activerecord/index.html"&gt;Active
Record&lt;/a&gt;. I'll blog more detail later but it's what I have been looking for all
these years! Many time I have implemented simple subsets of the functionality that
Castle provides to help get the job done. Castle wraps up all those funky framework
fragments and more with a great "action pack" flavour to it in the form of &lt;a target="_blank" href="http://castleproject.org/monorail/index.html"&gt;Mono
Rail&lt;/a&gt; (i.e. 'ruby on rails' for .Net)
&lt;/p&gt;
&lt;p&gt;
Very cool&amp;nbsp; ;-)&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=6e3c894e-5ba9-4971-9d1e-4f15846e87a9" /&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=6af04fba-8fae-469a-b827-55b623fc0732</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,6af04fba-8fae-469a-b827-55b623fc0732.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a quick note that could drive you completely mad if you were not aware... 
</p>
        <p>
If you are using <b>NUnitForms </b>for testing your GUI and have code in the forms
"Shown" event, it will not run unless you follow the <b>Form.Show</b> call with <b>Application.DoEvents()</b>,
see sample code below
</p>
        <p>
This example is just a Label (label1) dumped on a Form with the <i>Load </i>and <i>Shown </i>events
updating the label with the respective event text:<br /></p>
        <p>
          <span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">
            <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Collections.Generic;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.ComponentModel;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Data;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Drawing;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Text;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Windows.Forms;<br /><br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">namespace</span> NUnitFormsDemo1<br />
{<br />
    <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span> partial <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">class</span> ShownTestForm
: Form<br />
    {<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span> ShownTestForm()<br />
        {<br />
            InitializeComponent();<br />
        }<br /><br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> ShownTestForm_Load(<span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">object</span> sender,
EventArgs e)<br />
        {<br />
            label1.Text <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Load"</span>;<br />
        }<br /><br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> ShownTestForm_Shown(<span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">object</span> sender,
EventArgs e)<br />
        {<br />
            label1.Text <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Shown"</span>;<br />
        }<br />
    }<br />
}<br /></span>
        </p>
Here is some sample NUnitForms test code, the first test asserts that after the <i>Form.Show</i> call
the label text is "Load" and the second test shows that the label text is "Shown".<br /><p><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Windows.Forms;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> NUnit.Framework;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> NUnit.Extensions.Forms;<br /><br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">namespace</span> NUnitFormsDemo1.UnitTests<br />
{<br />
    [TestFixture]<br />
    <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">class</span> TestFormShownIssue
: NUnitFormTest<br />
    {<br />
        [Test]<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> TestFormShow()<br />
        {<br />
            ShownTestForm
frm <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> ShownTestForm();<br />
            LabelTester
label1Tester <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> LabelTester(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"label1"</span>);<br />
            frm.Show();<br />
            Assert.AreEqual(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Load"</span>,
label1Tester.Text);<br />
        }<br /><br />
        [Test]<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> TestFormShowWithDoEvents()<br />
        {<br />
            ShownTestForm
frm <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> ShownTestForm();<br />
            LabelTester
label1Tester <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">new</span> LabelTester(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"label1"</span>);<br />
            frm.Show();<br />
            Application.DoEvents(); <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
allows the 'Shown' event to fire</span><br />
            Assert.AreEqual(<span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Shown"</span>,
label1Tester.Text);<br />
        }<br />
    }<br />
}</span></p><p></p><p>
I will take an educated guess that this is due to the GUI message pump etc.
</p><p>
In general if I come across this any of this type of unexpected behavior with NUnitForms
I will try a DoEvents before tearing my hair out. 
</p><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=6af04fba-8fae-469a-b827-55b623fc0732" /></body>
      <title>An NUnitForms Note for the Form Shown Event</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,6af04fba-8fae-469a-b827-55b623fc0732.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/06/13/An+NUnitForms+Note+For+The+Form+Shown+Event.aspx</link>
      <pubDate>Wed, 13 Jun 2007 09:30:07 GMT</pubDate>
      <description>&lt;p&gt;
Just a quick note that could drive you completely mad if you were not aware... 
&lt;/p&gt;
&lt;p&gt;
If you are using &lt;b&gt;NUnitForms &lt;/b&gt;for testing your GUI and have code in the forms
"Shown" event, it will not run unless you follow the &lt;b&gt;Form.Show&lt;/b&gt; call with &lt;b&gt;Application.DoEvents()&lt;/b&gt;,
see sample code below
&lt;/p&gt;
&lt;p&gt;
This example is just a Label (label1) dumped on a Form with the &lt;i&gt;Load &lt;/i&gt;and &lt;i&gt;Shown &lt;/i&gt;events
updating the label with the respective event text:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.ComponentModel;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Data;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Drawing;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Text;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;namespace&lt;/span&gt; NUnitFormsDemo1&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; partial &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; ShownTestForm
: Form&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; ShownTestForm()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;private&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ShownTestForm_Load(&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;object&lt;/span&gt; sender,
EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label1.Text &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Load"&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;private&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; ShownTestForm_Shown(&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;object&lt;/span&gt; sender,
EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label1.Text &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Shown"&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
Here is some sample NUnitForms test code, the first test asserts that after the &lt;i&gt;Form.Show&lt;/i&gt; call
the label text is "Load" and the second test shows that the label text is "Shown".&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; NUnit.Framework;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; NUnit.Extensions.Forms;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;namespace&lt;/span&gt; NUnitFormsDemo1.UnitTests&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixture]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; TestFormShownIssue
: NUnitFormTest&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; TestFormShow()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShownTestForm
frm &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; ShownTestForm();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LabelTester
label1Tester &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; LabelTester(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"label1"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frm.Show();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.AreEqual(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Load"&lt;/span&gt;,
label1Tester.Text);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; TestFormShowWithDoEvents()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ShownTestForm
frm &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; ShownTestForm();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LabelTester
label1Tester &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;new&lt;/span&gt; LabelTester(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"label1"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;frm.Show();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Application.DoEvents(); &lt;span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;//
allows the 'Shown' event to fire&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.AreEqual(&lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Shown"&lt;/span&gt;,
label1Tester.Text);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I will take an educated guess that this is due to the GUI message pump etc.
&lt;/p&gt;
&lt;p&gt;
In general if I come across this any of this type of unexpected behavior with NUnitForms
I will try a DoEvents before tearing my hair out. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=6af04fba-8fae-469a-b827-55b623fc0732" /&gt;</description>
      <category>Coding/Work Arrounds;NUnitForms;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=5c82f81d-3ec9-4195-8477-55c78c067996</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,5c82f81d-3ec9-4195-8477-55c78c067996.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have had some questions regarding the icons (or rather images) that I use in my
applications (such as the 'pending' <a target="miniSqlQuery" href="http://www.pksoftware.net/MiniSqlQuery/Default.aspx">Mini
SQL Query</a> tool)... 
</p>
        <p>
They are by <a target="famfamfam" href="http://famfamfam.com/about/">Mark James</a> -
he has a bunch of great free stuff available at:<br /><b><a target="famfamfam" href="http://famfamfam.com/">http://famfamfam.com/</a></b> -
more so the "Silk" set at <a target="famfamfam" href="http://famfamfam.com/lab/icons/silk/">http://famfamfam.com/lab/icons/silk/</a></p>
        <p>
The images are licensed under a <a target="license" href="http://creativecommons.org/licenses/by/2.5/">Creative
Commons Attribution 2.5 License</a>.<br /></p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=5c82f81d-3ec9-4195-8477-55c78c067996" />
      </body>
      <title>Free Useful PNG Images for Windows and Web Applications - famfamfam.com</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,5c82f81d-3ec9-4195-8477-55c78c067996.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/06/07/Free+Useful+PNG+Images+For+Windows+And+Web+Applications+Famfamfamcom.aspx</link>
      <pubDate>Thu, 07 Jun 2007 10:05:56 GMT</pubDate>
      <description>&lt;p&gt;
I have had some questions regarding the icons (or rather images) that I use in my
applications (such as the 'pending' &lt;a target="miniSqlQuery" href="http://www.pksoftware.net/MiniSqlQuery/Default.aspx"&gt;Mini
SQL Query&lt;/a&gt; tool)... 
&lt;/p&gt;
&lt;p&gt;
They are by &lt;a target="famfamfam" href="http://famfamfam.com/about/"&gt;Mark James&lt;/a&gt; -
he has a bunch of great free stuff available at:&lt;br&gt;
&lt;b&gt;&lt;a target="famfamfam" href="http://famfamfam.com/"&gt;http://famfamfam.com/&lt;/a&gt;&lt;/b&gt; -
more so the "Silk" set at &lt;a target="famfamfam" href="http://famfamfam.com/lab/icons/silk/"&gt;http://famfamfam.com/lab/icons/silk/&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The images are licensed under a &lt;a target="license" href="http://creativecommons.org/licenses/by/2.5/"&gt;Creative
Commons Attribution 2.5 License&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=5c82f81d-3ec9-4195-8477-55c78c067996" /&gt;</description>
      <category>Links;Products/Mini SQL Query</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=1c20e079-491d-4995-baea-65bafd3dae98</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,1c20e079-491d-4995-baea-65bafd3dae98.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">This is the line of code that I keep forgetting...<br /><p><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);</span></p>
Use it in (for example) the Program.Main function when the application starts up and
the threads currrent principal is now the windows user. So... 
<br /><p><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">Thread.CurrentPrincipal.Identity.IsAuthenticated</span></p>
Will now be <b>true </b>and you can make use of the <b>Identity.Name</b> property
etc.<br /><br />
Self reminder over...<br /><br /><i>More Notes...</i><br /><br />
If for example you need to perform unit tests as a windows user (to access the username
or hit a resource) you can make use of the <b>AppDomain.CurrentDomain.SetPrincipalPolicy</b> method
in the test fixture setup/teardown methods - see example below. I put the UnauthenticatedPrincipal
setting in the teardown so that subsequent tests do not have their principal modified
by accident...<br /><p><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Security.Principal;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> System.Threading;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">using</span> NUnit.Framework;<br /><br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">namespace</span> Tests.SetPrincipalPolicyExample<br />
{<br />
    [TestFixture]<br />
    <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">class</span> TestSomethingUsingCurrentWindowsPrincipal<br />
    {<br />
        <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">///
&lt;summary&gt;Called once before all tests are run.&lt;/summary&gt;</span><br />
        [TestFixtureSetUp()]<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> TestFixtureSetUp()<br />
        {<br />
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);<br />
        }<br /><br />
        <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">///
&lt;summary&gt;Called once after all tests have run.&lt;/summary&gt;</span><br />
        [TestFixtureTearDown()]<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> TestFixtureTearDown()<br />
        {<br />
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.UnauthenticatedPrincipal);<br />
        }<br /><br />
        [Test]<br />
        <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">public</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">void</span> VerifySomething()<br />
        {<br />
            <span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">string</span> expectedUsername <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> Thread.CurrentPrincipal.Identity.Name;<br />
            <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
more testing stuff</span><br />
        }<br />
    }<br />
}<br /></span></p><br /><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=1c20e079-491d-4995-baea-65bafd3dae98" /></body>
      <title>Run a Windows Forms application as the Windows User - Integrated Security</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,1c20e079-491d-4995-baea-65bafd3dae98.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/05/17/Run+A+Windows+Forms+Application+As+The+Windows+User+Integrated+Security.aspx</link>
      <pubDate>Thu, 17 May 2007 13:32:42 GMT</pubDate>
      <description>This is the line of code that I keep forgetting...&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);&lt;/span&gt;
&lt;/p&gt;
Use it in (for example) the Program.Main function when the application starts up and
the threads currrent principal is now the windows user. So... 
&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;Thread.CurrentPrincipal.Identity.IsAuthenticated&lt;/span&gt;
&lt;/p&gt;
Will now be &lt;b&gt;true &lt;/b&gt;and you can make use of the &lt;b&gt;Identity.Name&lt;/b&gt; property
etc.&lt;br&gt;
&lt;br&gt;
Self reminder over...&lt;br&gt;
&lt;br&gt;
&lt;i&gt;More Notes...&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
If for example you need to perform unit tests as a windows user (to access the username
or hit a resource) you can make use of the &lt;b&gt;AppDomain.CurrentDomain.SetPrincipalPolicy&lt;/b&gt; method
in the test fixture setup/teardown methods - see example below. I put the UnauthenticatedPrincipal
setting in the teardown so that subsequent tests do not have their principal modified
by accident...&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Security.Principal;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Threading;&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; NUnit.Framework;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;namespace&lt;/span&gt; Tests.SetPrincipalPolicyExample&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixture]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; TestSomethingUsingCurrentWindowsPrincipal&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;summary&amp;gt;Called once before all tests are run.&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixtureSetUp()]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; TestFixtureSetUp()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;summary&amp;gt;Called once after all tests have run.&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixtureTearDown()]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; TestFixtureTearDown()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.UnauthenticatedPrincipal);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; VerifySomething()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;string&lt;/span&gt; expectedUsername &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; Thread.CurrentPrincipal.Identity.Name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;//
more testing stuff&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=1c20e079-491d-4995-baea-65bafd3dae98" /&gt;</description>
      <category>Coding</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=3d848b6c-f05d-400b-a580-9f5e274880bc</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,3d848b6c-f05d-400b-a580-9f5e274880bc.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>NOTE - Mini SQL Query has been released now - see </strong>
          <a href="http://www.pksoftware.net/blog/2008/02/01/Beta+Release+Of+Mini+SQL+Query.aspx">
            <strong>http://www.pksoftware.net/blog/2008/02/01/Beta+Release+Of+Mini+SQL+Query.aspx</strong>
          </a>
          <strong>.</strong>
        </p>
        <p>
 
</p>
        <p>
This is not a <i>product release</i>, but a <i>notice of release (!) </i>for my latest
pet project, "<b><a href="http://www.pksoftware.net/MiniSqlQuery/Default.aspx" target="miniSqlQuery">Mini
SQL Query</a></b>".<br /><br />
What is Mini SQL Query?...<br /></p>
        <blockquote>"Mini SQL Query from PK Software is a minimalist SQL query tool for multiple
providers (MSSQL, Oracle, OLEDB, MS Access files etc). The goal of the Mini SQL Query
tool is to allow a developer or trouble-shooter to quickly diagnose issues or make
changes to a database using a tool with a small footprint, that is fast, expandable
and easy to use."<br /></blockquote>
        <b>Some Features:</b>
        <br />
        <ul>
          <li>
Multiple database type connections (e.g. MSSQL, Oracle, Access etc) 
</li>
          <li>
Syntax Highlighting 
</li>
          <li>
Object Inspector (Browse the tables, columns etc for the connection) 
</li>
          <li>
Easy to utilize Plug-In system that has access to all the applications internals</li>
        </ul>
        <i>Sample Screenshot </i>- The Mini SQL Query tool in use against the Northwind Sample
DB:<br /><br /><img src="http://www.pksoftware.net/blog/content/binary/msq-shot1.png" border="0" /><br /><br />
I call it "mini" because I wanted to keep it simple and fast. I uses a straight forward
but powerful plugin architecture that makes adding menu or toolbar options as simple
as adding a reference in a DLL project and implementing a few functions from the <i>IPlugIn </i>interface.
I will be pushing out a few posts about the service and command style of coding soon
due to its implicit focus on issues such as dependency injection (DIP) and (dare I
say it) service-oriented architecture (and no I am not talking about web services!)
These techniques in turn improve code quality, testing and in turn maintenance (and
again in turn our sanity as programmers...)<br /><br />
I will publish a core product and then make other plugins available for download.<br /><br /><b>Plugin Example 1...</b><br /><br />
Here is a simple example - display connection...<br /><br /><img src="http://www.pksoftware.net/blog/content/binary/msq-shot-download-plugins.png" border="0" /><br /><br />
Below is the example C# plugin code that displays the <i>current connection string</i> in
the <i>editor </i>window.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> MiniSqlQuery.Plugin.Example<br />
{<br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
&lt;summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
This example command inserts the current connection string details into the editor
text.</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
&lt;/summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> DisplayConnectionCommand
: CommandBase<br />
    {<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> DisplayConnectionCommand(IServiceContainer
services)<br />
            : <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>(services, <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Display
Connection Example"</span>)<br />
        {<br />
        }<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Execute()<br />
        {<br />
            IEditor editorService <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.ServiceManager.CurrentEditor;<br />
            editorService.Query <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>.Format(<br />
                <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"--
Connection: {0}\r\n\r\n{1}"</span>,<br />
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.ServiceManager.DatabaseConfigurationManager.ConnectionString,<br />
                editorService.Query);<br />
        }<br />
    }<br />
}<br /></span></p>
Running the menu command:<br /><br /><img src="http://www.pksoftware.net/blog/content/binary/msq-shot-display-conn-plugin.png" border="0" /><br /><br />
Simple I know but I wanted to show the command execution approach using services.<b><br /><br />
Plugin Example 2...<br /></b><br />
OK - not that exciting! Here is another example where a business object is generated
from the result set...<br /><br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span> MakeBusinessObjectFromResultsCommand<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"></span></span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    </span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Inherits</span> CommandBase<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"></span></span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    </span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> services <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> IServiceContainer)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"></span></span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    </span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    </span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">MyBase</span>.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span>(services, <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Make
BO from Results"</span>)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"></span></span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    </span><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Overrides</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> Execute()<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> editor <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> IEditor <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Me</span>.ServiceManager.CurrentEditor<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">If</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Not</span> editor.Result <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Is</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Nothing</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">AndAlso</span> _<br />
         editor.Result.Tables.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Count</span> &gt;
0 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Then</span><br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'
create some simple code gen using the results</span><br />
            editor.Messages <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> GenerateClass(editor.Result.Tables(0))<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Else</span><br />
            editor.Messages <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"No
results to generate code from."</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">If</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
&lt;summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
Given a DataTable (&lt;paramref name="dt"/&gt;), a basic VB.NET class is generated.</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
&lt;/summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
&lt;param name="dt"&gt;A DataTabel to generate a class from.&lt;/param&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
&lt;returns&gt;&lt;/returns&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">'''
&lt;remarks&gt;&lt;/remarks&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Function</span> GenerateClass(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> dt <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> DataTable) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> code <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> Text.StringBuilder()<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span> fieldName <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Dim</span><font color="#000000"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeName</span></font><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
        code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Public
Class {0}{1}"</span>, dt.TableName, vbCrLf)<br />
        code.AppendLine()<br />
        code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Public Sub New{0}"</span>, vbCrLf)<br />
        code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
End Sub{0}"</span>, vbCrLf)<br />
        code.AppendLine()<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">For</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Each</span> column <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> DataColumn <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">In</span> dt.Columns<br />
            fieldName <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"_"</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span> column.ColumnName<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeName</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> column.DataType.FullName<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Private {0} As {1}{2}"</span>, fieldName, column.DataType.FullName, vbCrLf)<br />
            code.AppendLine()<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Public Property {0}() As {1}{2}"</span>, column.ColumnName, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeName</span>,
vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Get{0}"</span>, vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Return {0}{1}"</span>, fieldName, vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
End Get{0}"</span>, vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
Set(ByVal value As {0}){1}"</span>, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">typeName</span>,
vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
{0} = value{1}"</span>, fieldName, vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
End Set{0}"</span>, vbCrLf)<br />
            code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"
End Property{0}"</span>, vbCrLf)<br />
            code.AppendLine()<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Next</span><br /><br />
        code.AppendFormat(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"End
Class"</span>)<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> code.ToString()<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Function</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span></span></p><br />
Running this command against the "select * from customers" query produces the following:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span> Table<br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span>()<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _CustomerID <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> CustomerID() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _CustomerID<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _CustomerID <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _CompanyName <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> CompanyName() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _CompanyName<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _CompanyName <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _ContactName <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> ContactName() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _ContactName<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _ContactName <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _ContactTitle <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> ContactTitle() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _ContactTitle<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _ContactTitle <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _Address <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> Address() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _Address<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _Address <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _City <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> City() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _City<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _City <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _Region <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> Region() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _Region<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _Region <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _PostalCode <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> PostalCode() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _PostalCode<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _PostalCode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _Country <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> Country() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _Country<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _Country <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _Phone <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> Phone() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _Phone<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _Phone <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Private</span> _Fax <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br /><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span> Fax() <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Return</span> _Fax<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Get</span><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span>(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ByVal</span> value <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">As</span> System.<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">String</span>)<br />
            _Fax <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Set</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Property</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Class</span></span></p><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><br /></span></span></p></span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"></span></span></p><p></p><b>Motivation</b><br /><br />
My main motivation was the lack of speed I experience (no matter how fast my dev box)
in using the "default" tools for SQL development. No way of customizing things easily
further frustrated me. With a tool such as Mini SQL Query I can quickly add extras
as I need them. For example, one plugin I plan of adding is focused on Access databases,
I want to be able to write a query in an editor and push the .Net code to execute
that query straight into my development project. 
<br /><br />
I will but publishing a first cut within the next couple of weeks and from there get
some feedback etc.<br /><br /><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=3d848b6c-f05d-400b-a580-9f5e274880bc" /></body>
      <title>Pending Release of Mini SQL Query</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,3d848b6c-f05d-400b-a580-9f5e274880bc.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/05/14/Pending+Release+Of+Mini+SQL+Query.aspx</link>
      <pubDate>Mon, 14 May 2007 02:38:15 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;NOTE - Mini SQL Query has been released now - see &lt;/strong&gt;&lt;a href="http://www.pksoftware.net/blog/2008/02/01/Beta+Release+Of+Mini+SQL+Query.aspx"&gt;&lt;strong&gt;http://www.pksoftware.net/blog/2008/02/01/Beta+Release+Of+Mini+SQL+Query.aspx&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
This is not a &lt;i&gt;product release&lt;/i&gt;, but a &lt;i&gt;notice of release (!) &lt;/i&gt;for my latest
pet project, "&lt;b&gt;&lt;a href="http://www.pksoftware.net/MiniSqlQuery/Default.aspx" target=miniSqlQuery&gt;Mini
SQL Query&lt;/a&gt;&lt;/b&gt;".&lt;br&gt;
&lt;br&gt;
What is Mini SQL Query?...&lt;br&gt;
&lt;/p&gt;
&lt;blockquote&gt;"Mini SQL Query from PK Software is a minimalist SQL query tool for multiple
providers (MSSQL, Oracle, OLEDB, MS Access files etc). The goal of the Mini SQL Query
tool is to allow a developer or trouble-shooter to quickly diagnose issues or make
changes to a database using a tool with a small footprint, that is fast, expandable
and easy to use."&lt;br&gt;
&lt;/blockquote&gt;&lt;b&gt;Some Features:&lt;/b&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Multiple database type connections (e.g. MSSQL, Oracle, Access etc) 
&lt;li&gt;
Syntax Highlighting 
&lt;li&gt;
Object Inspector (Browse the tables, columns etc for the connection) 
&lt;li&gt;
Easy to utilize Plug-In system that has access to all the applications internals&lt;/li&gt;
&lt;/ul&gt;
&lt;i&gt;Sample Screenshot &lt;/i&gt;- The Mini SQL Query tool in use against the Northwind Sample
DB:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/msq-shot1.png" border=0&gt;
&lt;br&gt;
&lt;br&gt;
I call it "mini" because I wanted to keep it simple and fast. I uses a straight forward
but powerful plugin architecture that makes adding menu or toolbar options as simple
as adding a reference in a DLL project and implementing a few functions from the &lt;i&gt;IPlugIn &lt;/i&gt;interface.
I will be pushing out a few posts about the service and command style of coding soon
due to its implicit focus on issues such as dependency injection (DIP) and (dare I
say it) service-oriented architecture (and no I am not talking about web services!)
These techniques in turn improve code quality, testing and in turn maintenance (and
again in turn our sanity as programmers...)&lt;br&gt;
&lt;br&gt;
I will publish a core product and then make other plugins available for download.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Plugin Example 1...&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Here is a simple example - display connection...&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/msq-shot-download-plugins.png" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Below is the example C# plugin code that displays the &lt;i&gt;current connection string&lt;/i&gt; in
the &lt;i&gt;editor &lt;/i&gt;window.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; MiniSqlQuery.Plugin.Example&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
This example command inserts the current connection string details into the editor
text.&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; DisplayConnectionCommand
: CommandBase&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; DisplayConnectionCommand(IServiceContainer
services)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;(services, &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Display
Connection Example"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;override&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Execute()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEditor editorService &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;this&lt;/span&gt;.ServiceManager.CurrentEditor;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;editorService.Query &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;.Format(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"--
Connection: {0}\r\n\r\n{1}"&lt;/span&gt;,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;this&lt;/span&gt;.ServiceManager.DatabaseConfigurationManager.ConnectionString,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;editorService.Query);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
Running the menu command:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/msq-shot-display-conn-plugin.png" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Simple I know but I wanted to show the command execution approach using services.&lt;b&gt;
&lt;br&gt;
&lt;br&gt;
Plugin Example 2...&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
OK - not that exciting! Here is another example where a business object is generated
from the result set...&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt; MakeBusinessObjectFromResultsCommand&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Inherits&lt;/span&gt; CommandBase&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; services &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; IServiceContainer)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;MyBase&lt;/span&gt;.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt;(services, &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Make
BO from Results"&lt;/span&gt;)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Overrides&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; Execute()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; editor &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; IEditor &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Me&lt;/span&gt;.ServiceManager.CurrentEditor&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;If&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Not&lt;/span&gt; editor.Result &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Is&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Nothing&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;AndAlso&lt;/span&gt; _&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editor.Result.Tables.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Count&lt;/span&gt; &amp;gt;
0 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Then&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'
create some simple code gen using the results&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;editor.Messages &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; GenerateClass(editor.Result.Tables(0))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Else&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;editor.Messages &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"No
results to generate code from."&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;If&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
Given a DataTable (&amp;lt;paramref name="dt"/&amp;gt;), a basic VB.NET class is generated.&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
&amp;lt;param name="dt"&amp;gt;A DataTabel to generate a class from.&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;'''
&amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Function&lt;/span&gt; GenerateClass(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; dt &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; DataTable) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; code &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; Text.StringBuilder()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; fieldName &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Dim&lt;/span&gt; &lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeName&lt;/span&gt; &lt;/font&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Public
Class {0}{1}"&lt;/span&gt;, dt.TableName, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendLine()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Public Sub New{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
End Sub{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendLine()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;For&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Each&lt;/span&gt; column &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; DataColumn &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;In&lt;/span&gt; dt.Columns&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fieldName &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"_"&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; column.ColumnName&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeName&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; column.DataType.FullName&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Private {0} As {1}{2}"&lt;/span&gt;, fieldName, column.DataType.FullName, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendLine()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Public Property {0}() As {1}{2}"&lt;/span&gt;, column.ColumnName, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeName&lt;/span&gt;,
vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Get{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Return {0}{1}"&lt;/span&gt;, fieldName, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
End Get{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
Set(ByVal value As {0}){1}"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;typeName&lt;/span&gt;,
vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
{0} = value{1}"&lt;/span&gt;, fieldName, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
End Set{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"
End Property{0}"&lt;/span&gt;, vbCrLf)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendLine()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Next&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code.AppendFormat(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"End
Class"&lt;/span&gt;)&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; code.ToString()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Function&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
Running this command against the "select * from customers" query produces the following:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt; Table&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt;()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _CustomerID &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; CustomerID() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _CustomerID&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_CustomerID &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _CompanyName &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; CompanyName() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _CompanyName&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_CompanyName &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _ContactName &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; ContactName() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _ContactName&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_ContactName &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _ContactTitle &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; ContactTitle() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _ContactTitle&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_ContactTitle &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _Address &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; Address() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _Address&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Address &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _City &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; City() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _City&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_City &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _Region &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; Region() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _Region&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Region &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _PostalCode &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; PostalCode() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _PostalCode&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_PostalCode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _Country &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; Country() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _Country&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Country &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _Phone &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; Phone() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _Phone&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Phone &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Private&lt;/span&gt; _Fax &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt; Fax() &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Return&lt;/span&gt; _Fax&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Get&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ByVal&lt;/span&gt; value &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;As&lt;/span&gt; System.&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;String&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Fax &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Set&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Property&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Class&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;b&gt;Motivation&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
My main motivation was the lack of speed I experience (no matter how fast my dev box)
in using the "default" tools for SQL development. No way of customizing things easily
further frustrated me. With a tool such as Mini SQL Query I can quickly add extras
as I need them. For example, one plugin I plan of adding is focused on Access databases,
I want to be able to write a query in an editor and push the .Net code to execute
that query straight into my development project. 
&lt;br&gt;
&lt;br&gt;
I will but publishing a first cut within the next couple of weeks and from there get
some feedback etc.&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=3d848b6c-f05d-400b-a580-9f5e274880bc" /&gt;</description>
      <category>Products;Products/Mini SQL Query</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=4bc04ac2-49d9-46b5-b14f-c2c0068df7c9</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,4bc04ac2-49d9-46b5-b14f-c2c0068df7c9.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I don’t normally just post a <a href="http://www.pksoftware.net/blog/CategoryView,category,Links.aspx">link</a> but
this one caught my eye... From <a target="_blank" href="http://omg.worsethanfailure.com/">http://omg.worsethanfailure.com/</a></p>
        <p>
A blurb from the site: 
</p>
        <blockquote> The first ever Olympiad of Misguided Geeks contest at Worse Than Failure
(or OMGWTF for short) is a new kind of programming contest. Readers are invited to
be creative with devising a calculator with the craziest code they can write. One
lucky and potentially insane winner will get either a brand new MacBook Pro or comparable
Sony VAIO laptop. </blockquote>
        <p>
Sounds really tempting! 
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=4bc04ac2-49d9-46b5-b14f-c2c0068df7c9" />
      </body>
      <title>The first ever Olympiad of Misguided Geeks Contest</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,4bc04ac2-49d9-46b5-b14f-c2c0068df7c9.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/05/04/The+First+Ever+Olympiad+Of+Misguided+Geeks+Contest.aspx</link>
      <pubDate>Fri, 04 May 2007 02:12:41 GMT</pubDate>
      <description>&lt;p&gt;
I don’t normally just post a &lt;a href="http://www.pksoftware.net/blog/CategoryView,category,Links.aspx"&gt;link&lt;/a&gt; but
this one caught my eye... From &lt;a target="_blank" href="http://omg.worsethanfailure.com/"&gt;http://omg.worsethanfailure.com/&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
A blurb from the site: 
&lt;/p&gt;
&lt;blockquote&gt; The first ever Olympiad of Misguided Geeks contest at Worse Than Failure
(or OMGWTF for short) is a new kind of programming contest. Readers are invited to
be creative with devising a calculator with the craziest code they can write. One
lucky and potentially insane winner will get either a brand new MacBook Pro or comparable
Sony VAIO laptop. &lt;/blockquote&gt; 
&lt;p&gt;
Sounds really tempting! 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=4bc04ac2-49d9-46b5-b14f-c2c0068df7c9" /&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=01ec306c-abfa-4a85-8552-1be776a2f1d8</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,01ec306c-abfa-4a85-8552-1be776a2f1d8.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#808080">
            <b>
              <font size="4">
                <font color="#000000">My blog has moved to:</font>
                <br />
  </font>
              <a href="http://www.pksoftware.net/devblog/">
                <font size="4">http://www.pksoftware.net/devblog/</font>
              </a>
            </b>
          </font>
        </p>
        <p>
          <strong>
            <font color="#808080">
              <font size="4">
                <font color="#000000">This post now at:</font>
                <br />
  </font>
              <a href="http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx">
                <font size="4">http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx</font>
              </a>
            </font>
          </strong>
        </p>
        <p>
          <strong>
            <font color="#808080" size="3">
            </font>
          </strong> 
</p>
        <p>
          <font color="#808080">
            <b>Another sequel to the entry on "Getting Started with NUnitForms"<br />
  <a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx">http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx</a><br />
This post is focused on compiling the latest NUnitForms code from sourceforge.<br /><br /></b>
          </font>I have seen/heard/had a few questions about testing windows forms controls
that are not currently supported by <b>NUnitForms </b>(specifically "<b>.Net 2.0 NUnitForms
alpha 5 release</b>" - <a href="http://sourceforge.net/project/showfiles.php?group_id=95656" target="_blank">http://sourceforge.net/project/showfiles.php?group_id=95656</a>).<br /><br />
There are 2 answers... 
<br /></p>
        <ol>
          <li>
Cut your own (see the "<b>How to add Control Testers</b>" section at <a href="http://nunitforms.sourceforge.net/docs.html" target="_blank">http://nunitforms.sourceforge.net/docs.html</a>),
or<br /></li>
          <li>
Get the latest source out of the subversion repository and use the <b>generic tester
class</b>...<br /></li>
        </ol>
The subversion connection details are here: <a href="http://sourceforge.net/svn/?group_id=95656" target="_blank">http://sourceforge.net/svn/?group_id=95656</a><br /><br />
You will need <b>TortoiseSVN </b>(<a href="http://tortoisesvn.net/" target="_blank">http://tortoisesvn.net/</a>)
or similar to get the files. 
<br /><br /><p></p><img src="http://www.pksoftware.net/blog/content/binary/svn-get-nunitforms.PNG" border="0" /><br /><br />
Note that all related files for the build are also downloaded (nant, nunit, ncover
and ndoc etc) so there won’t be any messing around trying to find the correct library
dependencies (ahhh!) Of course, because of this the download is about 8.5mb...<br /><br />
Now... from here on in things <i>could get a little messy</i>. You could have problems
with key containters, there may be a duplicate "ButtonTestser.cs" file... The list
was getting a little long - the short answer to the "problems" were to compile the <b>NUnitForms </b>project
after modifying the signing method of the 2 projects "NUnitForms" and "NUnitForms.ScreenCapture".
You will also need to delete the <b>AssemblyKeyName </b>code references in the relevent
AssemblyInfo.cs files.<br /><br /><img src="http://www.pksoftware.net/blog/content/binary/signing-nunitforms.PNG" border="0" /><br /><br />
Keep in mind that when you get the latest out of a code repository this sort of thing
is not unexpected or "bad". Its a work in progress...<br /><br />
Now the latest build of the NUnitForms DLL will give you access to the generic control
tester class. When you need to test a control that does not have its own tester class
(e.g. ButtonTester) you can use the generic declaration and create your own tester
class, e.g. for a picture box:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> PictureBoxTester
: <b>ControlTester&lt;PictureBox, PictureBoxTester&gt;</b><br />
{<br />
  <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
Now implement each overloaded constructor calling the base class</span><br />
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> PictureBoxTester()
{}<br />
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> PictureBoxTester(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> name,
Form form) : <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>(name,
form) {}<br />
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> PictureBoxTester(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> name, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> formName)
: <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>(name,
formName) {}<br />
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> PictureBoxTester(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> name)
: <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>(name)
{}<br />
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> PictureBoxTester(ControlTester
tester, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> index)
: <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>(tester,
index) {}<br />
}</span></p><font face="Courier New"><br /><br /></font>Now in the tests you can create tester objects and access all the properties
and perform clicks etc:<br /><br /><font face="Courier New"></font><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[Test]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> ExamplePropertyCheckAndDoubleClickTest()<br />
{<br />
  PictureBoxTester picTester <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> PictureBoxTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"pictureBox1"</span>);<br />
  Assert.AreEqual(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">@"C:\dir\somePic.bmp"</span>, <b>picTester.Properties</b>.ImageLocation);<br />
  <b>picTester.DoubleClick</b>();<br />
}<br /></span></p><br />
Easy as pie right?! Well sort of. But much easier than writing your own windows forms
GUI testing framework!!<br /><br />
PK  ;-)<br /><br /><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=01ec306c-abfa-4a85-8552-1be776a2f1d8" /></body>
      <title>Working with unsupported controls in NUnitForms</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,01ec306c-abfa-4a85-8552-1be776a2f1d8.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/03/20/Working+With+Unsupported+Controls+In+NUnitForms.aspx</link>
      <pubDate>Tue, 20 Mar 2007 12:32:20 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;My blog has moved to:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;This post now at:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=3&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;Another sequel to the entry on "Getting Started with NUnitForms"&lt;br&gt;
&amp;nbsp; &lt;a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx"&gt;http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx&lt;/a&gt;
&lt;br&gt;
This post is focused on compiling the latest NUnitForms code from sourceforge.&lt;br&gt;
&lt;br&gt;
&lt;/b&gt;&lt;/font&gt;I have seen/heard/had a few questions about testing windows forms controls
that are not currently supported by &lt;b&gt;NUnitForms &lt;/b&gt;(specifically "&lt;b&gt;.Net 2.0 NUnitForms
alpha 5 release&lt;/b&gt;" - &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=95656" target=_blank&gt;http://sourceforge.net/project/showfiles.php?group_id=95656&lt;/a&gt;).&lt;br&gt;
&lt;br&gt;
There are 2 answers... 
&lt;br&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Cut your own (see the "&lt;b&gt;How to add Control Testers&lt;/b&gt;" section at &lt;a href="http://nunitforms.sourceforge.net/docs.html" target=_blank&gt;http://nunitforms.sourceforge.net/docs.html&lt;/a&gt;),
or&lt;br&gt;
&lt;li&gt;
Get the latest source out of the subversion repository and use the &lt;b&gt;generic tester
class&lt;/b&gt;...&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
The subversion connection details are here: &lt;a href="http://sourceforge.net/svn/?group_id=95656" target=_blank&gt;http://sourceforge.net/svn/?group_id=95656&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
You will need &lt;b&gt;TortoiseSVN &lt;/b&gt;(&lt;a href="http://tortoisesvn.net/" target=_blank&gt;http://tortoisesvn.net/&lt;/a&gt;)
or similar to get the files. 
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/svn-get-nunitforms.PNG" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Note that all related files for the build are also downloaded (nant, nunit, ncover
and ndoc etc) so there won’t be any messing around trying to find the correct library
dependencies (ahhh!) Of course, because of this the download is about 8.5mb...&lt;br&gt;
&lt;br&gt;
Now... from here on in things &lt;i&gt;could get a little messy&lt;/i&gt;. You could have problems
with key containters, there may be a duplicate "ButtonTestser.cs" file... The list
was getting a little long - the short answer to the "problems" were to compile the &lt;b&gt;NUnitForms &lt;/b&gt;project
after modifying the signing method of the 2 projects "NUnitForms" and "NUnitForms.ScreenCapture".
You will also need to delete the &lt;b&gt;AssemblyKeyName &lt;/b&gt;code references in the relevent
AssemblyInfo.cs files.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/signing-nunitforms.PNG" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Keep in mind that when you get the latest out of a code repository this sort of thing
is not unexpected or "bad". Its a work in progress...&lt;br&gt;
&lt;br&gt;
Now the latest build of the NUnitForms DLL will give you access to the generic control
tester class. When you need to test a control that does not have its own tester class
(e.g. ButtonTester) you can use the generic declaration and create your own tester
class, e.g. for a picture box:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; PictureBoxTester
: &lt;b&gt;ControlTester&amp;lt;PictureBox, PictureBoxTester&amp;gt;&lt;/b&gt;
&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
Now implement each overloaded constructor calling the base class&lt;/span&gt;
&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; PictureBoxTester()
{}&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; PictureBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; name,
Form form) : &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;(name,
form) {}&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; PictureBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; name, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; formName)
: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;(name,
formName) {}&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; PictureBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; name)
: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;(name)
{}&lt;br&gt;
&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; PictureBoxTester(ControlTester
tester, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; index)
: &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;(tester,
index) {}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;font face="Courier New"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;Now in the tests you can create tester objects and access all the properties
and perform clicks etc:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[Test]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; ExamplePropertyCheckAndDoubleClickTest()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; PictureBoxTester picTester &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; PictureBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"pictureBox1"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp; Assert.AreEqual(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;@"C:\dir\somePic.bmp"&lt;/span&gt;, &lt;b&gt;picTester.Properties&lt;/b&gt;.ImageLocation);&lt;br&gt;
&amp;nbsp; &lt;b&gt;picTester.DoubleClick&lt;/b&gt;();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
Easy as pie right?! Well sort of. But much easier than writing your own windows forms
GUI testing framework!!&lt;br&gt;
&lt;br&gt;
PK&amp;nbsp; ;-)&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=01ec306c-abfa-4a85-8552-1be776a2f1d8" /&gt;</description>
      <category>NUnitForms;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=075da0a9-329a-4a03-92ee-354d7db1aa6e</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,075da0a9-329a-4a03-92ee-354d7db1aa6e.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#808080">
            <b>
              <font size="4">
                <font color="#000000">My blog has moved to:</font>
                <br />
  </font>
              <a href="http://www.pksoftware.net/devblog/">
                <font size="4">http://www.pksoftware.net/devblog/</font>
              </a>
            </b>
          </font>
        </p>
        <p>
          <font color="#808080">
            <b>
              <font size="4">
                <font color="#000000">This post now at:</font>
                <br />
  </font>
              <a href="http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms-GUI-Testing-With-Message-Boxes.aspx">
                <font size="4">http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms-GUI-Testing-With-Message-Boxes.aspx</font>
              </a>
            </b>
          </font>
        </p>
        <p>
          <strong>
            <font color="#808080" size="4">
            </font>
          </strong> 
</p>
        <p>
          <font color="#808080">
            <b>A sequel to the entry on "Getting Started with NUnitForms"<br />
  <a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx">http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx</a><br />
This post is focused on handling the testing of message boxes in an application.<br /></b>
          </font>
          <br />
Another common test requirement that you will probably come across in the GUI world
is the use of message boxes. To handle a message box with NUnitForms (i.e. simulate
a <i>user click</i> or similar), use a "message box handler" method. Firstly set up
the test to "expect" a message box and then supply the name of the method to handle
the reaction:<br /></p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[Test]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> MessageBoxTest()<br />
{<br />
   <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">base</span>.ExpectModal(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Info"</span>, <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"MessageBoxTestHandler"</span>);<br />
  ButtonTester runButton <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> ButtonTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"RunButton"</span>);<br />
  runButton.Click();<br />
}<br /></span>
        </p>
This tells the test sub-system that a message box is expected and the <i>title </i>should
be "Info". Also supplied is the name of a handling method - in this case "MessageBoxTestHandler".
This method should create a "MessageBoxTester" and (most likely) click the OK button:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> MessageBoxTestHandler()<br />
{<br />
  MessageBoxTester messageBox <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> MessageBoxTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"No
Item Selected"</span>);<br />
  messageBox.ClickOk();<br />
}<br /></span></p>
Other useful methods of the <b>MessageBoxTester </b>class are "ClickCancel" and "SendCommand(cmd)"
where "cmd" is an <i>enum </i>value of type <b>MessageBoxTester.Command</b>:<br /><ul><li>
OK 
</li><li>
Cancel 
</li><li>
Abort 
</li><li>
Retry 
</li><li>
Ignore 
</li><li>
Yes 
</li><li>
No 
</li><li>
Close 
</li><li>
Help</li></ul>
For example:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> MessageBoxTestHandler()<br />
{<br />
  MessageBoxTester messageBox <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> MessageBoxTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Cancel,
are you sure?"</span>);<br />
  messageBox.SendCommand(Command.Yes);<br />
}<br /></span></p>
A practical application of this could be tests where for example if search criteria
is not supplied a "no criteria" message box is displayed. Boundary checks in methods
are common places for bugs to occur so make sure you perform the same boundary check
on the GUI layer!<br /><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=075da0a9-329a-4a03-92ee-354d7db1aa6e" /></body>
      <title>Getting Started with NUnitForms - GUI Testing with Message Boxes</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,075da0a9-329a-4a03-92ee-354d7db1aa6e.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/02/12/Getting+Started+With+NUnitForms+GUI+Testing+With+Message+Boxes.aspx</link>
      <pubDate>Mon, 12 Feb 2007 12:19:41 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;My blog has moved to:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;This post now at:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms-GUI-Testing-With-Message-Boxes.aspx"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms-GUI-Testing-With-Message-Boxes.aspx&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=4&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;A sequel to the entry on "Getting Started with NUnitForms"&lt;br&gt;
&amp;nbsp; &lt;a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx"&gt;http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx&lt;/a&gt;
&lt;br&gt;
This post is focused on handling the testing of message boxes in an application.&lt;br&gt;
&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
Another common test requirement that you will probably come across in the GUI world
is the use of message boxes. To handle a message box with NUnitForms (i.e. simulate
a &lt;i&gt;user click&lt;/i&gt; or similar), use a "message box handler" method. Firstly set up
the test to "expect" a message box and then supply the name of the method to handle
the reaction:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[Test]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; MessageBoxTest()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;base&lt;/span&gt;.ExpectModal(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Info"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"MessageBoxTestHandler"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp; ButtonTester runButton &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; ButtonTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"RunButton"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp; runButton.Click();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
This tells the test sub-system that a message box is expected and the &lt;i&gt;title &lt;/i&gt;should
be "Info". Also supplied is the name of a handling method - in this case "MessageBoxTestHandler".
This method should create a "MessageBoxTester" and (most likely) click the OK button:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; MessageBoxTestHandler()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; MessageBoxTester messageBox &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; MessageBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"No
Item Selected"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp; messageBox.ClickOk();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
Other useful methods of the &lt;b&gt;MessageBoxTester &lt;/b&gt;class are "ClickCancel" and "SendCommand(cmd)"
where "cmd" is an &lt;i&gt;enum &lt;/i&gt;value of type &lt;b&gt;MessageBoxTester.Command&lt;/b&gt;:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
OK 
&lt;li&gt;
Cancel 
&lt;li&gt;
Abort 
&lt;li&gt;
Retry 
&lt;li&gt;
Ignore 
&lt;li&gt;
Yes 
&lt;li&gt;
No 
&lt;li&gt;
Close 
&lt;li&gt;
Help&lt;/li&gt;
&lt;/ul&gt;
For example:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; MessageBoxTestHandler()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; MessageBoxTester messageBox &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; MessageBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Cancel,
are you sure?"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp; messageBox.SendCommand(Command.Yes);&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
A practical application of this could be tests where for example if search criteria
is not supplied a "no criteria" message box is displayed. Boundary checks in methods
are common places for bugs to occur so make sure you perform the same boundary check
on the GUI layer!&lt;br&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=075da0a9-329a-4a03-92ee-354d7db1aa6e" /&gt;</description>
      <category>NUnitForms;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=0e8f9491-6a85-4e5e-82a6-6f62ad9208f2</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,0e8f9491-6a85-4e5e-82a6-6f62ad9208f2.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <strong>
          <font color="#808080">
            <p>
              <font color="#808080">
                <b>
                  <font size="4">
                    <font color="#000000">My blog has moved to:</font>
                    <br />
  </font>
                  <a href="http://www.pksoftware.net/devblog/">
                    <font size="4">http://www.pksoftware.net/devblog/</font>
                  </a>
                </b>
              </font>
            </p>
            <p>
              <strong>
                <font color="#808080">
                  <font size="4">
                    <font color="#000000">This post now at:</font>
                    <br />
  </font>
                  <a href="http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms.aspx">
                    <font size="4">http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms.aspx</font>
                  </a>
                  <a href="http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx">
                  </a>
                </font>
              </strong>
            </p>
            <p>
              <strong>
                <font color="#808080" size="3">
                </font>
              </strong> 
</p>
            <p>
An introduction to NUnitForms with a basic example of automated Microsoft .Net Windows
Forms Testing using NUnit.
</p>
          </font>
        </strong>
        <p>
          <font face="Arial" size="2">NUnitForms is a lesser known extension to the well known
NUnit testing framework. See </font>
          <a href="http://nunitforms.sourceforge.net/">
            <u>
              <font face="Arial" color="#0000ff" size="2">http://nunitforms.sourceforge.net/</font>
            </u>
          </a>
          <font face="Arial" size="2"> for
details and downloads. It is currently in the process of being upgraded from .Net
Framework V1.1 to V2.0 and is only being distributed as an MSI with no source code
(except via CVS as Adam pointed out below).</font>
        </p>
        <p>
          <font face="Arial" size="2">I have found it quite useful but the documentation was
lacking and the learning curve a bit painful, hence this post! I will assume that
you have NUnit and NUnitForms installed for the following code samples to run.</font>
        </p>
        <h3>How can NUnitForms be used?
</h3>
        <font face="Arial" size="2">
          <p>
NUnitForms gives a developer the ability to approach forms development from
a test first perspective, or to simply provide a reliable set of automated regression
tests for a user interface. (For the record, I am not getting into concepts such as
model-view-controller/presenter, interface coding or the like - all I am demonstrating
is how to use NUnitForms for testing.)
</p>
          <p>
NUnitForms replaces (or supplements) the traditional “GUI test harness” method commonly
used for GUI development. Sometime the use of even a test harness is bypassed (because
of time restrictions of course!) The problem with manual test harnesses are that the
typically become a mess that only the original developer can even make sense of and,
all the testing is done manually. NunitForms alleviates these issues by making things
automated in the first place. I am not against the use of a manual GUI test harness
- they still have their benefits - but compared to automated testing they lose out
big time. A useful GUI test harness example that would be hard to test in an automated
fashion is control resize behaviour and positioning.<br /><br /></p>
        </font>
        <h3>How does it work?
</h3>
        <font face="Arial" size="2">
          <p>
Basically there is a lot of reflection and forms/controls parsing to locate controls
and invoke the methods that are normally performed by the user, such as pushing a
button. For example, a test uses NUnitForms code that fires the “OnClick” event for
a button. You put together a series of these events simulating a user and you have
an automated script. That’s putting it really simply!
</p>
        </font>
        <h3>A Simple Example
</h3>
        <font face="Arial" size="2">
        </font>
        <p>
          <font face="Arial" size="2">Get a new instance of VS.Net going. I created a basic
form as below:</font>
        </p>
        <p>
          <img src="http://www.pksoftware.net/blog/content/binary/nunitforms-pic-1.Png" border="0" />
        </p>
        <font face="Arial" size="2">
        </font>
        <p>
          <font face="Arial" size="2">The textbox and button are named “NameTextbox” and “RunButon”
respectively (more on that later).</font>
        </p>
        <p>
          <font face="Arial" size="2">Add a new project for the unit testing - add references
to:</font>
        </p>
        <ul>
          <font face="Arial" size="2">
            <li>
The windows application we are testing 
</li>
            <li>
NUnit 
</li>
            <li>
NUnitForms 
</li>
            <li>
System.Windows.Forms
</li>
          </font>
        </ul>
        <p>
          <font face="Arial" size="2">See sample solution setup below:</font>
        </p>
        <p>
          <img src="http://www.pksoftware.net/blog/content/binary/nunitforms-pic-4.Png" border="0" />
        </p>
        <font face="Arial" size="2">
        </font>
        <p>
          <font face="Arial" size="2">Now define a test fixture as normal (with the addition
of the <strong>NUnit.Extensions.Forms</strong> using directive) but there are 2 main
differences:</font>
        </p>
        <ul>
          <font face="Arial" size="2">
            <li>
the fixture needs to inherit from “<strong>NUnitFormTest</strong>” and to get the
test to work at all. 
</li>
            <li>
we need to override the “<strong>Setup</strong>” method. In this setup method we create
an instance of the form and show it.
</li>
          </font>
        </ul>
        <p>
          <font face="Arial" size="2">Make sure you show it or you will go crazy trying to debug
the problem (yes I forgot!) The setup method is called before each test so we start
with a clean slate.</font>
        </p>
        <p>
          <font face="Arial" size="2">Now for a test. This is a dumb test, but remember we are
looking at the concept! </font>
        </p>
        <p>
          <font face="Arial" size="2">When I push the “Run” button, I want whatever test is
in the textbox to become the form title, sample test:</font>
        </p>
        <p>
          <font face="Arial" size="2">We need a <strong>TextBoxTester</strong> and a <strong>ButtonTester</strong>.
This will give us access to the button and textbox on the form. Assign a value to
the textbox and invoke a “click” on the button. Now for the test, we have a reference
to the test form at the fixture level so we can get the form title from there.</font>
        </p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <font face="Arial" size="2">using</font>
            </span>
            <font face="Arial" size="2"> System;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> NUnit.Framework;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> NUnit.Extensions.Forms;<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> NUnitFormsDemo1.UnitTests<br />
{<br />
    [TestFixture]<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> SimpleFormTests
: NUnitFormTest<br />
    {<br />
        SimpleForm _simpleForm;<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Setup()<br />
        {<br />
            _simpleForm <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SimpleForm();<br />
            _simpleForm.Show();<br />
        }<br /><br />
        [Test]<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> FillTextboxWithData()<br />
        {<br />
            TextBoxTester
nameTextbox <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> TextBoxTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"NameTextbox"</span>);<br />
            ButtonTester
runButton <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> ButtonTester(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"RunButton"</span>);<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> expected <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"From
automated test."</span>;<br />
            <br />
            Assert.AreEqual(<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Simple
Form"</span>, _simpleForm.Text, <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Initial
value incorrect."</span>);<br />
            nameTextbox[<span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Text"</span>] <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> expected;<br />
            runButton.Click();<br />
            Assert.AreEqual(expected,
_simpleForm.Text, <span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)">"Title
should be that textbox value."</span>);<br />
        }<br />
    }<br />
}<br /></font>
          </span>
        </p>
        <font face="Arial" size="2">
          <font face="Arial" size="2">
            <p>
The test failed.
</p>
          </font>
          <font size="1">
          </font>
        </font>
        <p>
          <font face="Arial" size="2">
            <font size="1">
              <font face="Courier New" size="2">TestCase
'NUnitFormsDemo1.UnitTests.SimpleFormTests.FillTextboxWithData'<br /></font>
              <font face="Courier New" size="2">failed: Title should be that textbox value.<br /></font>
              <font face="Courier New" size="2">String lengths differ. Expected length=20,
but was length=11.<br /></font>
              <font face="Courier New" size="2">Strings differ at index 0.<br /></font>
              <font face="Courier New" size="2">
                <strong>expected: &lt;"From automated test."&gt;<br /></strong>
              </font>
              <font face="Courier New" size="2">
                <strong>but was: &lt;"Simple Form"&gt;<br /></strong>
              </font>
              <font size="2">
                <font face="Courier New">
                  <br />
                </font>
              </font>
            </font>
            <font face="Arial">Now implement the code to pass the test. Here
is the rocket science code back in the form:</font>
          </font>
        </p>
        <font face="Arial" size="2">
          <font face="Arial">
            <p>
              <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span>
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> RunButton_Click(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span> sender,
EventArgs e)<br />
{<br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">this</span>.Text <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> NameTextbox.Text;<br />
}<br /></span>
            </p>
          </font>
        </font>
        <h3>Hey - I can do that without NUnitForms!
</h3>
        <font face="Arial" size="2">
          <font face="Arial" size="2">
            <p>
That particular test yes - with some changes to the sample form itself. The controls
would need to be exposed either via a property or similar and the button click can
be simulated with the “PerformClick” method. However that calls for exposing controls
via properties etc which means alot more coding and to be honest we are just
scratching the surface of what NUnitForms can do. The use of NUnitForms allows
us to avoid that sort of "coding simply to support testing".
</p>
            <p>
I hope that can get you started, more to come... PK :-)
</p>
            <p>
              <a href="http://www.dotnetkicks.com/kick/?url=http://www.pksoftware.net/blog/2007/02/06/Getting%2bStarted%2bWith%2bNUnitForms.aspx">
                <img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.pksoftware.net/blog/2007/02/06/Getting%2bStarted%2bWith%2bNUnitForms.aspx" border="0" />
              </a>
            </p>
          </font>
        </font>
        <p>
Demo Source: <a href="http://www.pksoftware.net/blog/content/binary/NUnitFormsDemo1.zip">NUnitFormsDemo1.zip
(12.83 KB)</a></p>
        <hr width="100%" size="2" />
        <p>
More Forms Testing:<br /></p>
        <ul>
          <li>
            <a href="http://www.pksoftware.net/blog/2007/02/12/Getting+Started+With+NUnitForms+GUI+Testing+With+Message+Boxes.aspx">Getting
Started with NUnitForms - GUI Testing with Message Boxes</a>
          </li>
          <li>
            <a href="http://www.pksoftware.net/blog/2007/03/20/Working+With+Unsupported+Controls+In+NUnitForms.aspx">Working
With Unsupported Controls In NUnitForms</a>
          </li>
        </ul>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=0e8f9491-6a85-4e5e-82a6-6f62ad9208f2" />
      </body>
      <title>Getting Started with NUnitForms</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,0e8f9491-6a85-4e5e-82a6-6f62ad9208f2.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx</link>
      <pubDate>Tue, 06 Feb 2007 14:30:47 GMT</pubDate>
      <description>&lt;strong&gt;&lt;font color=#808080&gt; 
&lt;p&gt;
&lt;font color=#808080&gt;&lt;b&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;My blog has moved to:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/&lt;/font&gt;&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080&gt;&lt;font size=4&gt;&lt;font color=#000000&gt;This post now at:&lt;/font&gt;
&lt;br&gt;
&amp;nbsp; &lt;/font&gt;&lt;a href="http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms.aspx"&gt;&lt;font size=4&gt;http://www.pksoftware.net/devblog/post/2007/02/Getting-Started-With-NUnitForms.aspx&lt;/font&gt;&lt;/a&gt;&lt;a href="http://www.pksoftware.net/devblog/post/2007/03/Working-With-Unsupported-Controls-In-NUnitForms.aspx"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color=#808080 size=3&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
An introduction to NUnitForms with a basic example of automated Microsoft .Net Windows
Forms Testing using NUnit.
&lt;/font&gt;&lt;/strong&gt;&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;NUnitForms is a lesser known extension to the well known NUnit
testing framework. See &lt;/font&gt;&lt;a href="http://nunitforms.sourceforge.net/"&gt;&lt;u&gt;&lt;font face=Arial color=#0000ff size=2&gt;http://nunitforms.sourceforge.net/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face=Arial size=2&gt; for
details and downloads. It is currently in the process of being upgraded from .Net
Framework V1.1 to V2.0 and is only being distributed as an MSI with no source code
(except via CVS as Adam pointed out below).&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;I have found it quite useful but the documentation was lacking
and the learning curve a bit painful, hence this post! I will assume that you have
NUnit and NUnitForms installed for the following code samples to run.&lt;/font&gt;
&lt;/p&gt;
&lt;h3&gt;How can NUnitForms be used?
&lt;/h3&gt;
&lt;font face=Arial size=2&gt; 
&lt;p&gt;
NUnitForms gives a developer&amp;nbsp;the ability to&amp;nbsp;approach forms development from
a test first perspective, or to simply provide a reliable set of automated regression
tests for a user interface. (For the record, I am not getting into concepts such as
model-view-controller/presenter, interface coding or the like - all I am demonstrating
is how to use NUnitForms for testing.)
&lt;/p&gt;
&lt;p&gt;
NUnitForms replaces (or supplements) the traditional “GUI test harness” method commonly
used for GUI development. Sometime the use of even a test harness is bypassed (because
of time restrictions of course!) The problem with manual test harnesses are that the
typically become a mess that only the original developer can even make sense of and,
all the testing is done manually. NunitForms alleviates these issues by making things
automated in the first place. I am not against the use of a manual GUI test harness
- they still have their benefits - but compared to automated testing they lose out
big time. A useful GUI test harness example that would be hard to test in an automated
fashion is control resize behaviour and positioning.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;h3&gt;How does it work?
&lt;/h3&gt;
&lt;font face=Arial size=2&gt; 
&lt;p&gt;
Basically there is a lot of reflection and forms/controls parsing to locate controls
and invoke the methods that are normally performed by the user, such as pushing a
button. For example, a test uses NUnitForms code that fires the “OnClick” event for
a button. You put together a series of these events simulating a user and you have
an automated script. That’s putting it really simply!
&lt;/p&gt;
&lt;/font&gt; 
&lt;h3&gt;A Simple Example
&lt;/h3&gt;
&lt;font face=Arial size=2&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font face=Arial size=2&gt;Get a new instance of VS.Net going. I created a basic form
as below:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/nunitforms-pic-1.Png" border=0&gt;
&lt;/p&gt;
&lt;font face=Arial size=2&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font face=Arial size=2&gt;The textbox and button are named “NameTextbox” and “RunButon”
respectively (more on that later).&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;Add a new project for the unit testing - add references to:&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;font face=Arial size=2&gt; 
&lt;li&gt;
The windows application we are testing 
&lt;li&gt;
NUnit 
&lt;li&gt;
NUnitForms 
&lt;li&gt;
System.Windows.Forms
&lt;/font&gt;&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;See sample solution setup below:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/nunitforms-pic-4.Png" border=0&gt;
&lt;/p&gt;
&lt;font face=Arial size=2&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font face=Arial size=2&gt;Now define a test fixture as normal (with the addition of
the &lt;strong&gt;NUnit.Extensions.Forms&lt;/strong&gt; using directive) but there are 2 main
differences:&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;font face=Arial size=2&gt; 
&lt;li&gt;
the fixture needs to inherit from “&lt;strong&gt;NUnitFormTest&lt;/strong&gt;” and to get the
test to work at all. 
&lt;li&gt;
we need to override the “&lt;strong&gt;Setup&lt;/strong&gt;” method. In this setup method we create
an instance of the form and show it.
&lt;/font&gt;&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;Make sure you show it or you will go crazy trying to debug
the problem (yes I forgot!) The setup method is called before each test so we start
with a clean slate.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;Now for a test. This is a dumb test, but remember we are looking
at the concept! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;When I push the “Run” button, I want whatever test is in the
textbox to become the form title, sample test:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face=Arial size=2&gt;We need a &lt;strong&gt;TextBoxTester&lt;/strong&gt; and a &lt;strong&gt;ButtonTester&lt;/strong&gt;.
This will give us access to the button and textbox on the form. Assign a value to
the textbox and invoke a “click” on the button. Now for the test, we have a reference
to the test form at the fixture level so we can get the form title from there.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;font face=Arial size=2&gt;using&lt;/font&gt;&lt;/span&gt;&lt;font face=Arial size=2&gt; System;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; NUnit.Framework;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; NUnit.Extensions.Forms;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; NUnitFormsDemo1.UnitTests&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestFixture]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; SimpleFormTests
: NUnitFormTest&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SimpleForm _simpleForm;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;override&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Setup()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_simpleForm &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SimpleForm();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_simpleForm.Show();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Test]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; FillTextboxWithData()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextBoxTester
nameTextbox &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; TextBoxTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"NameTextbox"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ButtonTester
runButton &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; ButtonTester(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"RunButton"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; expected &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"From
automated test."&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.AreEqual(&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Simple
Form"&lt;/span&gt;, _simpleForm.Text, &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Initial
value incorrect."&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameTextbox[&lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Text"&lt;/span&gt;] &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; expected;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;runButton.Click();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.AreEqual(expected,
_simpleForm.Text, &lt;span style="FONT-SIZE: 11px; COLOR: rgb(102,102,102); FONT-FAMILY: Courier New; BACKGROUND-COLOR: rgb(228,228,228)"&gt;"Title
should be that textbox value."&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;font face=Arial size=2&gt;&lt;font face=Arial size=2&gt; 
&lt;p&gt;
The test failed.
&lt;/p&gt;
&lt;/font&gt;&lt;font size=1&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font face=Arial size=2&gt;&lt;font size=1&gt;&lt;font face="Courier New" size=2&gt;TestCase 'NUnitFormsDemo1.UnitTests.SimpleFormTests.FillTextboxWithData'&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New" size=2&gt;failed: Title should be that textbox value.&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New" size=2&gt;String lengths differ. Expected length=20,
but was length=11.&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New" size=2&gt;Strings differ at index 0.&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New" size=2&gt;&lt;strong&gt;expected: &amp;lt;"From automated test."&amp;gt;&lt;br&gt;
&lt;/strong&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;&lt;strong&gt;but was: &amp;lt;"Simple Form"&amp;gt;&lt;br&gt;
&lt;/strong&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face=Arial&gt;Now implement the code to pass the test. Here
is the rocket science code back in the form:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font face=Arial size=2&gt;&lt;font face=Arial&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; RunButton_Click(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;object&lt;/span&gt; sender,
EventArgs e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;this&lt;/span&gt;.Text &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; NameTextbox.Text;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt; 
&lt;h3&gt;Hey - I can do that without NUnitForms!
&lt;/h3&gt;
&lt;font face=Arial size=2&gt;&lt;font face=Arial size=2&gt; 
&lt;p&gt;
That particular test yes - with some changes to the sample form itself. The controls
would need to be exposed either via a property or similar and the button click can
be simulated with the “PerformClick” method. However that calls for exposing controls
via properties etc which means alot more coding&amp;nbsp;and to be honest we are just
scratching the surface of what NUnitForms can do. The use of NUnitForms&amp;nbsp;allows
us to avoid&amp;nbsp;that sort of "coding simply to support testing".
&lt;/p&gt;
&lt;p&gt;
I hope that can get you started, more to come... PK :-)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.pksoftware.net/blog/2007/02/06/Getting%2bStarted%2bWith%2bNUnitForms.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.pksoftware.net/blog/2007/02/06/Getting%2bStarted%2bWith%2bNUnitForms.aspx" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
Demo Source: &lt;a href="http://www.pksoftware.net/blog/content/binary/NUnitFormsDemo1.zip"&gt;NUnitFormsDemo1.zip
(12.83 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;hr width="100%" size=2&gt;
&lt;p&gt;
More Forms Testing:&lt;br&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.pksoftware.net/blog/2007/02/12/Getting+Started+With+NUnitForms+GUI+Testing+With+Message+Boxes.aspx"&gt;Getting
Started with NUnitForms - GUI Testing with Message Boxes&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.pksoftware.net/blog/2007/03/20/Working+With+Unsupported+Controls+In+NUnitForms.aspx"&gt;Working
With Unsupported Controls In NUnitForms&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=0e8f9491-6a85-4e5e-82a6-6f62ad9208f2" /&gt;</description>
      <category>NUnitForms;TDD;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=9bca0848-33cc-4ee9-af0e-c36133631c4b</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,9bca0848-33cc-4ee9-af0e-c36133631c4b.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mads Kristensen has put together a really simple "<a target="_blank" href="http://madskristensen.dk/blog/Search+Engine+Positioner.aspx">Search
Engine Positioner</a>" application. Give it a domain name scope (e.g. "pksoftware.net"
;-) ) and 1 or more search terms and you can easily see where you are listed (not
ranked).
</p>
        <p>
          <img src="http://www.pksoftware.net/blog/content/binary/seo.png" border="0" />
        </p>
        <p>
          <a target="_blank" href="http://madskristensen.dk/blog/Trackback.aspx?guid=aa8e2134-9268-48cf-abaf-3e8414375bef">http://madskristensen.dk/blog/Trackback.aspx?guid=aa8e2134-9268-48cf-abaf-3e8414375bef</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=9bca0848-33cc-4ee9-af0e-c36133631c4b" />
      </body>
      <title>Search Engine Positioner</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,9bca0848-33cc-4ee9-af0e-c36133631c4b.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/02/06/Search+Engine+Positioner.aspx</link>
      <pubDate>Tue, 06 Feb 2007 13:13:41 GMT</pubDate>
      <description>&lt;p&gt;
Mads Kristensen has put together a really simple "&lt;a target="_blank" href="http://madskristensen.dk/blog/Search+Engine+Positioner.aspx"&gt;Search
Engine Positioner&lt;/a&gt;" application. Give it a domain name scope (e.g. "pksoftware.net"
;-) ) and 1 or more search terms and you can easily see where you are listed (not
ranked).
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.pksoftware.net/blog/content/binary/seo.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a target="_blank" href="http://madskristensen.dk/blog/Trackback.aspx?guid=aa8e2134-9268-48cf-abaf-3e8414375bef"&gt;http://madskristensen.dk/blog/Trackback.aspx?guid=aa8e2134-9268-48cf-abaf-3e8414375bef&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=9bca0848-33cc-4ee9-af0e-c36133631c4b" /&gt;</description>
      <category>Links;SOE</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=d4501046-bbd3-40a0-a75c-c11c7e83ccde</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,d4501046-bbd3-40a0-a75c-c11c7e83ccde.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The cool thing about getting a PAD file together is that once uploaded to a few site,
other download sites get the new PAD files and list them on their search site. Another
one I came accross is <a href="http://paddb.com/ListerDetails.aspx?id=16580">http://paddb.com/ListerDetails.aspx?id=16580</a> -
from here you can actually see how many downlaod sites have accessed your PAD file.
</p>
        <p>
(See previous post <a href="http://www.pksoftware.net/blog/2007/01/28/PAD+Files.aspx">http://www.pksoftware.net/blog/2007/01/28/PAD+Files.aspx</a>)
</p>
        <p>
I have listed the Verse Popper here <a href="http://paddb.com/ListerDetails.aspx?id=16580">http://paddb.com/ListerDetails.aspx?id=16580</a> -
it will be interresting to see the count increase...
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=d4501046-bbd3-40a0-a75c-c11c7e83ccde" />
      </body>
      <title>PAD file distribution</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,d4501046-bbd3-40a0-a75c-c11c7e83ccde.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/02/03/PAD+File+Distribution.aspx</link>
      <pubDate>Sat, 03 Feb 2007 00:41:51 GMT</pubDate>
      <description>&lt;p&gt;
The cool thing about getting a PAD file together is that once uploaded to a few site,
other download sites get the new PAD files and list them on their search site. Another
one I came accross is &lt;a href="http://paddb.com/ListerDetails.aspx?id=16580"&gt;http://paddb.com/ListerDetails.aspx?id=16580&lt;/a&gt;&amp;nbsp;-
from here you can actually see how many downlaod sites have accessed your PAD file.
&lt;/p&gt;
&lt;p&gt;
(See previous post &lt;a href="http://www.pksoftware.net/blog/2007/01/28/PAD+Files.aspx"&gt;http://www.pksoftware.net/blog/2007/01/28/PAD+Files.aspx&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
I have listed the&amp;nbsp;Verse Popper here&amp;nbsp;&lt;a href="http://paddb.com/ListerDetails.aspx?id=16580"&gt;http://paddb.com/ListerDetails.aspx?id=16580&lt;/a&gt;&amp;nbsp;-
it will be interresting to see the count increase...
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=d4501046-bbd3-40a0-a75c-c11c7e83ccde" /&gt;</description>
      <category>Links;Software Distribution;Products/Verse Popper</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=ca6e43ed-ab7b-4960-b328-2a1405c16cee</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,ca6e43ed-ab7b-4960-b328-2a1405c16cee.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have not messed around with this too much but I have registered my PAD (Portable
Application Description) file for the <a href="http://www.pksoftware.net/VersePopper/">Verse
Popper</a> with <a href="http://www.asp-shareware.org">www.asp-shareware.org</a>...
Looks like I have a bit more work to do but setting up a PAD file is easy and makes
submitting your software to a "download site" very quick.
</p>
        <p>
The actual Verse Popper PAD file is here:
</p>
        <p>
          <a href="http://www.pksoftware.net/VersePopper/pad_file.xml">http://www.pksoftware.net/VersePopper/pad_file.xml</a>
        </p>
        <p>
The ASP Shareware rendering looks like this:
</p>
        <p>
          <a href="http://www.asp-shareware.org/pad/showinfo.asp?xmlfile=http://www.pksoftware.net/versepopper/PAD_FILE.xml" target="_blank">http://www.asp-shareware.org/pad/showinfo.asp?xmlfile=http://www.pksoftware.net/versepopper/PAD_FILE.xml</a>
        </p>
        <p>
Bit ugly I thought!! I need to work out if there is any benifit to the end user seeing
this or if its just so generic it puts them off...
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=ca6e43ed-ab7b-4960-b328-2a1405c16cee" />
      </body>
      <title>PAD Files..?</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,ca6e43ed-ab7b-4960-b328-2a1405c16cee.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/01/28/PAD+Files.aspx</link>
      <pubDate>Sun, 28 Jan 2007 10:22:33 GMT</pubDate>
      <description>&lt;p&gt;
I have not messed around with this too much but I have registered my PAD (Portable
Application Description) file for the&amp;nbsp;&lt;a href="http://www.pksoftware.net/VersePopper/"&gt;Verse
Popper&lt;/a&gt;&amp;nbsp;with &lt;a href="http://www.asp-shareware.org"&gt;www.asp-shareware.org&lt;/a&gt;...
Looks like I have a bit more work to do but setting up a PAD file is easy and makes
submitting your software to a "download site" very quick.
&lt;/p&gt;
&lt;p&gt;
The actual Verse Popper PAD file is here:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.pksoftware.net/VersePopper/pad_file.xml"&gt;http://www.pksoftware.net/VersePopper/pad_file.xml&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The ASP Shareware rendering looks like this:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.asp-shareware.org/pad/showinfo.asp?xmlfile=http://www.pksoftware.net/versepopper/PAD_FILE.xml" target="_blank"&gt;http://www.asp-shareware.org/pad/showinfo.asp?xmlfile=http://www.pksoftware.net/versepopper/PAD_FILE.xml&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Bit ugly I thought!! I need to work out if there is any benifit to the end user seeing
this or if its just so generic it puts them off...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=ca6e43ed-ab7b-4960-b328-2a1405c16cee" /&gt;</description>
      <category>Products/Verse Popper;Software Distribution</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=475b2eb4-d2bc-41e8-bf1b-02fe50650261</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,475b2eb4-d2bc-41e8-bf1b-02fe50650261.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeremy Miller has put together a great post on Orthogonal Code - I must admit, I used
to code like that! Lucky we can learn and move on... well worth the read.
</p>
        <p>
          <a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/01/08/Orthogonal-Code.aspx">http://codebetter.com/blogs/jeremy.miller/archive/2007/01/08/Orthogonal-Code.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=475b2eb4-d2bc-41e8-bf1b-02fe50650261" />
      </body>
      <title>Great Post on Orthogonal Code</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,475b2eb4-d2bc-41e8-bf1b-02fe50650261.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/01/12/Great+Post+On+Orthogonal+Code.aspx</link>
      <pubDate>Fri, 12 Jan 2007 13:26:48 GMT</pubDate>
      <description>&lt;p&gt;
Jeremy Miller has put together a great post on Orthogonal Code - I must admit, I used
to code like that! Lucky we can learn and move on... well worth the read.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/01/08/Orthogonal-Code.aspx"&gt;http://codebetter.com/blogs/jeremy.miller/archive/2007/01/08/Orthogonal-Code.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=475b2eb4-d2bc-41e8-bf1b-02fe50650261" /&gt;</description>
      <category>Coding;Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=da821b8d-a5d0-47e5-916f-aec635abbda8</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,da821b8d-a5d0-47e5-916f-aec635abbda8.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
At some point in the unit testing game you will need to tackle the unpleasant task
of actually coding and running unit tests on the data access code. This in itself
can open a bit of a can of worms - the bigger the database, the more worms you need
to deal with. If you want a quick solution to being able to run a bunch of data
access tests that insert, update and delete data in tables - try putting a <strong>TransactionScope</strong> object
at the test fixture level. If the scope is not committed the changes are not stored,
perfect scenario for a group of unit tests. 
</p>
        <p>
          <a href="http://marcusrosen.blogspot.com/">Marcus Rosen</a> prompted the idea and
I have been using this technique against a local copy of an MSSQL database
and have had no issues to date. It has simplified the development process in that
data does not keep disappearing due to my unit tests clearing tables and inserting
test items.
</p>
        <p>
I have seen "Rollback" attributes around (such as <a href="http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx">http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx</a>)
but the above solution is a <em>one liner</em> and requires no new libraries, and
integration etc.
</p>
        <p>
I like a simple solution  ;-)
</p>
        <p>
          <br />
MSDN TransacrionScope Help:<br /><a href="http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx</a></p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=da821b8d-a5d0-47e5-916f-aec635abbda8" />
      </body>
      <title>Simple Rollback for Database Unit Testing</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,da821b8d-a5d0-47e5-916f-aec635abbda8.aspx</guid>
      <link>http://www.pksoftware.net/blog/2007/01/09/Simple+Rollback+For+Database+Unit+Testing.aspx</link>
      <pubDate>Tue, 09 Jan 2007 12:50:19 GMT</pubDate>
      <description>&lt;p&gt;
At some point in the unit testing game you will need to tackle the unpleasant task
of actually coding and running unit tests on the data access code. This in itself
can open a bit of a can of worms - the bigger the database, the more worms you need
to deal with. If you want&amp;nbsp;a quick solution to being able to run a bunch of data
access tests that insert, update and delete data in tables - try putting a &lt;strong&gt;TransactionScope&lt;/strong&gt; object
at the test fixture level. If the scope is not committed the changes are not stored,
perfect scenario for a group of unit tests. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://marcusrosen.blogspot.com/"&gt;Marcus Rosen&lt;/a&gt; prompted the idea and
I have been using&amp;nbsp;this technique&amp;nbsp;against a local copy of an MSSQL database
and have had no issues to date. It has simplified the development process in that
data does not keep disappearing&amp;nbsp;due to my unit tests clearing tables and inserting
test items.
&lt;/p&gt;
&lt;p&gt;
I have seen "Rollback" attributes around (such as &lt;a href="http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx"&gt;http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx&lt;/a&gt;)
but the above solution is a &lt;em&gt;one liner&lt;/em&gt; and requires no new libraries, and
integration etc.
&lt;/p&gt;
&lt;p&gt;
I like a simple solution&amp;nbsp; ;-)
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
MSDN TransacrionScope Help:&lt;br&gt;
&lt;a href="http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx" target=_blank&gt;http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=da821b8d-a5d0-47e5-916f-aec635abbda8" /&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=3cd8b83e-e46e-4043-8cac-6562c023f93d</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,3cd8b83e-e46e-4043-8cac-6562c023f93d.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I came across this a while ago and forgot to post… James Shore is putting together
what basically looks like a “how to get agile” guide. The book chapters are posted
fairly frequently for review. Looks like a good read. 
</p>
        <p>
          <a href="http://www.jamesshore.com/Agile-Book/">http://www.jamesshore.com/Agile-Book/</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=3cd8b83e-e46e-4043-8cac-6562c023f93d" />
      </body>
      <title>An Agile Book</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,3cd8b83e-e46e-4043-8cac-6562c023f93d.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/12/21/An+Agile+Book.aspx</link>
      <pubDate>Thu, 21 Dec 2006 12:23:29 GMT</pubDate>
      <description>
&lt;p&gt;
I came across this a while ago and forgot to post… James Shore is putting together
what basically looks like a “how to get agile” guide. The book chapters are posted
fairly frequently for review. Looks like a good read. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jamesshore.com/Agile-Book/"&gt;http://www.jamesshore.com/Agile-Book/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=3cd8b83e-e46e-4043-8cac-6562c023f93d" /&gt;</description>
      <category>Links;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=9f9bab9f-c5ec-4dd1-94fe-1b34d1e12cac</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,9f9bab9f-c5ec-4dd1-94fe-1b34d1e12cac.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Updated - See <a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx">http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx</a></p>
        <p>
        </p>
        <hr />
        <p>
        </p>
        <p>
I have not had a huge look at this yet but a not so known spin off from NUnit:
</p>
        <p>
          <a href="http://nunitforms.sourceforge.net/" target="_blank">http://nunitforms.sourceforge.net/</a>
        </p>
        <p>
Unit testing geared towards .Net WinForms applications...
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=9f9bab9f-c5ec-4dd1-94fe-1b34d1e12cac" />
      </body>
      <title>UI Testing and NUnitForms</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,9f9bab9f-c5ec-4dd1-94fe-1b34d1e12cac.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/12/11/UI+Testing+And+NUnitForms.aspx</link>
      <pubDate>Mon, 11 Dec 2006 11:32:32 GMT</pubDate>
      <description>&lt;p&gt;
Updated - See &lt;a href="http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx"&gt;http://www.pksoftware.net/blog/2007/02/06/Getting+Started+With+NUnitForms.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I have not had a huge look at this yet but a not so known spin off from NUnit:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://nunitforms.sourceforge.net/" target="_blank"&gt;http://nunitforms.sourceforge.net/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Unit testing geared towards .Net WinForms applications...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=9f9bab9f-c5ec-4dd1-94fe-1b34d1e12cac" /&gt;</description>
      <category>NUnitForms;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=2df22888-6aae-4ee2-a06d-e2d692faa707</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,2df22888-6aae-4ee2-a06d-e2d692faa707.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With test driven, I take the "standard" TDD approach (something like):
</p>
        <ul>
          <li>
write test (based on a use case etc) 
</li>
          <li>
build the app (will fail because code is not there etc) 
</li>
          <li>
implement code the code required to get the build compiling 
</li>
          <li>
run test (test will fail becasue the code stub does nothing useful) 
</li>
          <li>
implement code - run test and repeat until passed 
</li>
          <li>
refactor as required - run tests</li>
        </ul>
        <p>
Then apply then to Visual Studio 2005... The results of following this procedure need
to be experienced to really understand the benefits if you are not farmiliar with
TDD etc. 
</p>
        <p>
I also make use to a couple of manually created keyboard shortcuts, <em>Ctl+ALT+T</em> and <em>Ctl+ALT+R</em> which<br />
execute TestDriven.NET's "Run Test(s)" and "Repeat Test Runs" context menu options
respectively.
</p>
        <p>
Here is my TDD with <em>TestDriven.NET</em> and <em>VS.Net 2005's</em> handy <em>smart
menus</em> and <em>refactoring</em> capabilities:
</p>
        <ul>
          <li>
Create the class stub if its the first test for the class 
<br />
(I find the compiler telling me that I am missing a class kind of superfluous, I still
follow this process sometimes about 50-50) 
</li>
          <li>
Write test (based on a use case etc) 
</li>
          <li>
Before I build the application, I normally know which methods are missing so instead
of performing failing build I use the <em>smart menu </em>to generate the <em>stub </em>for
me (use the shortcut keys <em>Shift+ALT+F10</em>, then <em>enter</em>) 
</li>
          <li>
Run the test with <em>Ctl+ALT+T</em> (TestDriven.NET will perform a build as
required, the test will - or should - fail because the code stub does nothing useful)<br />
Use the "Escape" key to get out of the "Output" window after a test run. 
</li>
          <li>
Implement enough code to pass the test - run test and repeat until passed using <em>Ctl+ALT+R </em>to
execute the "Repeat Test Runs" option.<br />
Again, use the "Escape" key to get out of the "Output" window after a test run. 
</li>
          <li>
Refactor as required - run tests (<em>Ctl+ALT+R</em>)</li>
        </ul>
        <p>
Following this procedure helps me keep the focus on the requirements in a very efficient
manner with minimal flicking between windows, initiating builds etc.
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=2df22888-6aae-4ee2-a06d-e2d692faa707" />
      </body>
      <title>How Do I Use TestDriven.NET to Enhance TDD</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,2df22888-6aae-4ee2-a06d-e2d692faa707.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/27/How+Do+I+Use+TestDrivenNET+To+Enhance+TDD.aspx</link>
      <pubDate>Mon, 27 Nov 2006 12:45:24 GMT</pubDate>
      <description>&lt;p&gt;
With test driven, I take the "standard" TDD approach (something like):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
write test (based on a use case etc) 
&lt;li&gt;
build the app (will fail because code is not there etc) 
&lt;li&gt;
implement code the code required to get the build compiling 
&lt;li&gt;
run test (test will fail becasue the code stub does nothing useful) 
&lt;li&gt;
implement code - run test and repeat until passed 
&lt;li&gt;
refactor as required - run tests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Then apply then to Visual Studio 2005... The results of following this procedure need
to be experienced to really understand the benefits if you are not farmiliar with
TDD etc. 
&lt;/p&gt;
&lt;p&gt;
I also make use to a couple of manually created keyboard shortcuts, &lt;em&gt;Ctl+ALT+T&lt;/em&gt; and &lt;em&gt;Ctl+ALT+R&lt;/em&gt; which&lt;br&gt;
execute TestDriven.NET's "Run Test(s)" and "Repeat Test Runs" context menu options
respectively.
&lt;/p&gt;
&lt;p&gt;
Here is my TDD with &lt;em&gt;TestDriven.NET&lt;/em&gt; and &lt;em&gt;VS.Net 2005's&lt;/em&gt; handy &lt;em&gt;smart
menus&lt;/em&gt; and &lt;em&gt;refactoring&lt;/em&gt; capabilities:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Create the class stub if its the first test for the class 
&lt;br&gt;
(I find the compiler telling me that I am missing a class kind of superfluous, I still
follow this process sometimes about 50-50) 
&lt;li&gt;
Write test (based on a use case etc) 
&lt;li&gt;
Before I build the application, I normally know which methods are missing so instead
of performing failing build I use the &lt;em&gt;smart menu &lt;/em&gt;to generate the &lt;em&gt;stub &lt;/em&gt;for
me (use the shortcut keys &lt;em&gt;Shift+ALT+F10&lt;/em&gt;, then &lt;em&gt;enter&lt;/em&gt;) 
&lt;li&gt;
Run the test&amp;nbsp;with &lt;em&gt;Ctl+ALT+T&lt;/em&gt; (TestDriven.NET will perform a build as
required, the test will - or should - fail because the code stub does nothing useful)&lt;br&gt;
Use the "Escape" key to get out of the "Output" window after a test run. 
&lt;li&gt;
Implement enough code to pass the test - run test and repeat until passed using &lt;em&gt;Ctl+ALT+R &lt;/em&gt;to
execute the "Repeat Test Runs" option.&lt;br&gt;
Again, use the "Escape" key to get out of the "Output" window after a test run. 
&lt;li&gt;
Refactor as required - run tests (&lt;em&gt;Ctl+ALT+R&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Following this procedure helps me keep the focus on the requirements in a very efficient
manner with minimal flicking between windows, initiating builds etc.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=2df22888-6aae-4ee2-a06d-e2d692faa707" /&gt;</description>
      <category>TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=b351558c-8e3b-4878-a003-e976ff509f78</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,b351558c-8e3b-4878-a003-e976ff509f78.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Testing Non-Public Code from External NUnit Testing Assemblies</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,b351558c-8e3b-4878-a003-e976ff509f78.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/23/Testing+NonPublic+Code+From+External+NUnit+Testing+Assemblies.aspx</link>
      <pubDate>Thu, 23 Nov 2006 12:42:08 GMT</pubDate>
      <description>Using the InternalsVisibleTo attribute to get access to another classes internal methods for testing.&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=b351558c-8e3b-4878-a003-e976ff509f78"/&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=2eb86d9f-28d1-4400-9825-20c83f9eb0b8</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,2eb86d9f-28d1-4400-9825-20c83f9eb0b8.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jamie has put together a nice screencast of some of TestDriven.NET's new features,
check it out:
</p>
        <p>
          <a href="http://weblogs.asp.net/nunitaddin/archive/2006/11/11/Testing-With-NCover_2F00_NCoverExplorer.aspx">http://weblogs.asp.net/nunitaddin/archive/2006/11/11/Testing-With-NCover_2F00_NCoverExplorer.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=2eb86d9f-28d1-4400-9825-20c83f9eb0b8" />
      </body>
      <title>Testing With NCover/NCoverExplorer Screencast</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,2eb86d9f-28d1-4400-9825-20c83f9eb0b8.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/21/Testing+With+NCoverNCoverExplorer+Screencast.aspx</link>
      <pubDate>Tue, 21 Nov 2006 10:11:13 GMT</pubDate>
      <description>&lt;p&gt;
Jamie has put together a nice screencast of some of TestDriven.NET's new features,
check it out:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/nunitaddin/archive/2006/11/11/Testing-With-NCover_2F00_NCoverExplorer.aspx"&gt;http://weblogs.asp.net/nunitaddin/archive/2006/11/11/Testing-With-NCover_2F00_NCoverExplorer.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=2eb86d9f-28d1-4400-9825-20c83f9eb0b8" /&gt;</description>
      <category>TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=dc26798e-e7c6-45dc-b8eb-d439f9af4cdf</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,dc26798e-e7c6-45dc-b8eb-d439f9af4cdf.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is an article on extending the excellent ICShardCode TextEditor to support addition
syntax highlighting styles. Its quite straight forward.
</p>
        <p>
          <a href="http://pksoftware.net/Articles.aspx?id=803100dd-80fc-4604-b44f-bf243710cfac&amp;name=Extending_ICSharpCode.TextEditor_to_support_additional_Syntax_Highlighting">Extending
ICSharpCode.TextEditor to support additional Syntax Highlighting</a>
        </p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=dc26798e-e7c6-45dc-b8eb-d439f9af4cdf" />
      </body>
      <title>Article - Extending ICSharpCode.TextEditor to support additional Syntax Highlighting</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,dc26798e-e7c6-45dc-b8eb-d439f9af4cdf.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/18/Article+Extending+ICSharpCodeTextEditor+To+Support+Additional+Syntax+Highlighting.aspx</link>
      <pubDate>Sat, 18 Nov 2006 01:14:28 GMT</pubDate>
      <description>&lt;p&gt;
This is an article on extending the excellent ICShardCode TextEditor to support addition
syntax highlighting styles. Its quite straight forward.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pksoftware.net/Articles.aspx?id=803100dd-80fc-4604-b44f-bf243710cfac&amp;amp;name=Extending_ICSharpCode.TextEditor_to_support_additional_Syntax_Highlighting"&gt;Extending
ICSharpCode.TextEditor to support additional Syntax Highlighting&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=dc26798e-e7c6-45dc-b8eb-d439f9af4cdf" /&gt;</description>
      <category>Articles</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=06612396-6c8b-4201-af8d-71ff94b13522</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,06612396-6c8b-4201-af8d-71ff94b13522.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
On my site I have an area for articles: <a href="http://www.pksoftware.net/Articles.aspx">http://www.pksoftware.net/Articles.aspx</a>.
</p>
        <p>
Blogs are good for getting information out there but I find they get messy quickly
and finding stuff becomes a pain.
</p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=06612396-6c8b-4201-af8d-71ff94b13522" />
      </body>
      <title>Articles Area</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,06612396-6c8b-4201-af8d-71ff94b13522.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/18/Articles+Area.aspx</link>
      <pubDate>Sat, 18 Nov 2006 01:12:06 GMT</pubDate>
      <description>&lt;p&gt;
On my site I have an area for articles: &lt;a href="http://www.pksoftware.net/Articles.aspx"&gt;http://www.pksoftware.net/Articles.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Blogs are good for getting information out there but I find they get messy quickly
and finding stuff becomes a pain.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=06612396-6c8b-4201-af8d-71ff94b13522" /&gt;</description>
      <category>Articles</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=059c7ae7-2d62-46cf-a527-1887008760dd</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,059c7ae7-2d62-46cf-a527-1887008760dd.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
When I first started trying out TDD and (more so when I started using the <a href="http://testdriven.net/" target="_blank">TestDriven.Net</a>),
I still spend a good chunk of my test development time stepping through the code line
by line, checking the state of variable etc. It took me a while to kick the habit,
but when you get stuck into TDD you won't be spending anywhere near as much time stepping
through your code trying to work out what’s going wrong as you probably used to. 
<br />
Why? Because the unit tests you write in an incremental fashion, build slowly on the
last and in turn your confidence in the code is greater – you no longer feel the need
to step through the code. When I run a test that fails now I can usually spot the
issue relatively quickly without having to "step in". Those small TDD steps really
pay off.<br />
Don't get me wrong, I still step into my code when I get a curly one, but it's more
the odd occasion now than the natural response.<br />
Stay out of that debugger - it will save you a lot of time :-)<br /><img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=059c7ae7-2d62-46cf-a527-1887008760dd" /></body>
      <title>Stay Out of the Debugger!</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,059c7ae7-2d62-46cf-a527-1887008760dd.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/16/Stay+Out+Of+The+Debugger.aspx</link>
      <pubDate>Thu, 16 Nov 2006 09:46:13 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
When I first started trying out TDD and (more so when I started using the &lt;a href="http://testdriven.net/" target=_blank&gt;TestDriven.Net&lt;/a&gt;),
I still spend a good chunk of my test development time stepping through the code line
by line, checking the state of variable etc. It took me a while to kick the habit,
but when you get stuck into TDD you won't be spending anywhere near as much time stepping
through your code trying to work out what’s going wrong as you probably used to. 
&lt;br&gt;
Why? Because the unit tests you write in an incremental fashion, build slowly on the
last and in turn your confidence in the code is greater – you no longer feel the need
to step through the code. When I run a test that fails now I can usually spot the
issue relatively quickly without having to "step in". Those small TDD steps really
pay off.&lt;br&gt;
Don't get me wrong, I still step into my code when I get a curly one, but it's more
the odd occasion now than the natural response.&lt;br&gt;
Stay out of that debugger - it will save you a lot of time :-)&lt;br&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=059c7ae7-2d62-46cf-a527-1887008760dd" /&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=52481e8f-f59d-4e1b-8447-33eb56dcc3c1</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,52481e8f-f59d-4e1b-8447-33eb56dcc3c1.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>What happened to TestDriven.NET 1.0?</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,52481e8f-f59d-4e1b-8447-33eb56dcc3c1.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/13/What+Happened+To+TestDrivenNET+10.aspx</link>
      <pubDate>Mon, 13 Nov 2006 09:39:55 GMT</pubDate>
      <description>Why would anyone have a problem paying a (small amount) for a great piece of productivity software?
Jamie Cansdale has been copping flack about making TestDriven.Net a commercial product...&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=52481e8f-f59d-4e1b-8447-33eb56dcc3c1"/&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=64ae8353-0475-407b-af6d-8344d92ea661</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,64ae8353-0475-407b-af6d-8344d92ea661.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>NCoverExplorer v1.3.5 is out...</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,64ae8353-0475-407b-af6d-8344d92ea661.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/11/10/NCoverExplorer+V135+Is+Out.aspx</link>
      <pubDate>Fri, 10 Nov 2006 09:45:53 GMT</pubDate>
      <description>NCover Explorer is one of my "Must Have Apps"...&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=64ae8353-0475-407b-af6d-8344d92ea661"/&gt;</description>
      <category>Coding;TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=838bbaa3-cefa-4a98-b938-0072f815ab98</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,838bbaa3-cefa-4a98-b938-0072f815ab98.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Must Have Apps</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,838bbaa3-cefa-4a98-b938-0072f815ab98.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/08/30/Must+Have+Apps.aspx</link>
      <pubDate>Wed, 30 Aug 2006 10:28:50 GMT</pubDate>
      <description>These are some of my most used applications...&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=838bbaa3-cefa-4a98-b938-0072f815ab98"/&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=8baef98c-4f2f-497a-b113-ea83fc6854a7</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,8baef98c-4f2f-497a-b113-ea83fc6854a7.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A good article on the provider pattern:
</p>
        <p>
          <a class="" title="" href="http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx?pull=/library/en-us/dnaspnet/html/asp02182004.asp" target="_blank">Provider
Model Design Pattern and Specification, Part 1 on MSDN</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=8baef98c-4f2f-497a-b113-ea83fc6854a7" />
      </body>
      <title>Nice article - Provider Model Design Pattern and Specification</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,8baef98c-4f2f-497a-b113-ea83fc6854a7.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/04/24/Nice+Article+Provider+Model+Design+Pattern+And+Specification.aspx</link>
      <pubDate>Mon, 24 Apr 2006 00:37:39 GMT</pubDate>
      <description>
		&lt;p&gt;
A good article on the provider pattern:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="" title="" href="http://msdn.microsoft.com/asp.net/downloads/providers/default.aspx?pull=/library/en-us/dnaspnet/html/asp02182004.asp" target="_blank"&gt;Provider
Model Design Pattern and Specification, Part 1 on MSDN&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=8baef98c-4f2f-497a-b113-ea83fc6854a7" /&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=1e7dbfc7-f116-4e5e-bc61-42f06f178348</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,1e7dbfc7-f116-4e5e-bc61-42f06f178348.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://msdn.microsoft.com/vstudio/downloads/codesnippets/default.aspx">http://msdn.microsoft.com/vstudio/downloads/codesnippets/default.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=1e7dbfc7-f116-4e5e-bc61-42f06f178348" />
      </body>
      <title>Code snippets for C#</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,1e7dbfc7-f116-4e5e-bc61-42f06f178348.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/04/20/Code+Snippets+For+C.aspx</link>
      <pubDate>Thu, 20 Apr 2006 00:45:37 GMT</pubDate>
      <description>
		&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/vstudio/downloads/codesnippets/default.aspx"&gt;http://msdn.microsoft.com/vstudio/downloads/codesnippets/default.aspx&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=1e7dbfc7-f116-4e5e-bc61-42f06f178348" /&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=0f9a267f-9047-4dc5-a69f-8dbe253badb4</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,0f9a267f-9047-4dc5-a69f-8dbe253badb4.aspx</pingback:target>
      <dc:creator />
      <title>The "switch" code snippet... </title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,0f9a267f-9047-4dc5-a69f-8dbe253badb4.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/04/18/The+Switch+Code+Snippet.aspx</link>
      <pubDate>Tue, 18 Apr 2006 23:09:33 GMT</pubDate>
      <description>a "mini" snippit that actually does something cool ;-)&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=0f9a267f-9047-4dc5-a69f-8dbe253badb4"/&gt;</description>
      <category>Coding</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=2f101a9a-9a10-4ec5-8974-424e6fe00ff4</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,2f101a9a-9a10-4ec5-8974-424e6fe00ff4.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Visual Studio 2005 WinForms Designer can't handle User Controls that derive from Generic classes work around</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,2f101a9a-9a10-4ec5-8974-424e6fe00ff4.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/04/03/Visual+Studio+2005+WinForms+Designer+Cant+Handle+User+Controls+That+Derive+From+Generic+Classes+Work+Around.aspx</link>
      <pubDate>Mon, 03 Apr 2006 22:10:43 GMT</pubDate>
      <description>The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: DerivedControl --- The base class 'GenericControlBase' could not be loaded. Ensure the assembly has been referenced and that all projects have been built.
I can understand – but it’s still a bit annoying! I have some windows forms user controls that inherit from a class that implements generics. Problem is the designer can’t reflect those classes and in turn spits out the wonderful error above.&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=2f101a9a-9a10-4ec5-8974-424e6fe00ff4"/&gt;</description>
      <category>Coding;Coding/Work Arrounds</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=db4043f8-ed83-4139-95ce-2da8fd866a39</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,db4043f8-ed83-4139-95ce-2da8fd866a39.aspx</pingback:target>
      <dc:creator />
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Interesting code for the super geeks amounst us. SSCLI for version 2 of the .Net framework.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&amp;displaylang=en</a>
        </p>
        <img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=db4043f8-ed83-4139-95ce-2da8fd866a39" />
      </body>
      <title>Shared Source Common Language Infrastructure 2.0 Release</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,db4043f8-ed83-4139-95ce-2da8fd866a39.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/03/24/Shared+Source+Common+Language+Infrastructure+20+Release.aspx</link>
      <pubDate>Fri, 24 Mar 2006 09:51:22 GMT</pubDate>
      <description>&lt;p&gt;
Interesting code for the super geeks amounst us. SSCLI for version 2 of the .Net framework.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=db4043f8-ed83-4139-95ce-2da8fd866a39" /&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=73124395-9adf-48ac-80ba-ac3ff8a31181</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,73124395-9adf-48ac-80ba-ac3ff8a31181.aspx</pingback:target>
      <dc:creator />
      <title>Creating .Net Assemblies on the fly - Using CodeDom</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,73124395-9adf-48ac-80ba-ac3ff8a31181.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/02/26/Creating+Net+Assemblies+On+The+Fly+Using+CodeDom.aspx</link>
      <pubDate>Sun, 26 Feb 2006 01:21:02 GMT</pubDate>
      <description>A tutorial on using Microsoft .Net's CodeDom technology to generate assemblies on the fly.&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=73124395-9adf-48ac-80ba-ac3ff8a31181"/&gt;</description>
      <category>Coding;Coding/CodeDom</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=bbfcd82e-019a-4d76-8636-9f86215601b1</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,bbfcd82e-019a-4d76-8636-9f86215601b1.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Unit Testing Code Coverage With NCover</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,bbfcd82e-019a-4d76-8636-9f86215601b1.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/02/16/Unit+Testing+Code+Coverage+With+NCover.aspx</link>
      <pubDate>Thu, 16 Feb 2006 10:01:08 GMT</pubDate>
      <description>I stumbled accross NCover Explorer a while ago...&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=bbfcd82e-019a-4d76-8636-9f86215601b1"/&gt;</description>
      <category>TDD</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=17aaf0b6-fea2-4a40-a484-86ebb41247cb</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,17aaf0b6-fea2-4a40-a484-86ebb41247cb.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>A very "Visual Studio Add-Ins Every Developer Should Download Now" article</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,17aaf0b6-fea2-4a40-a484-86ebb41247cb.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/01/08/A+Very+Visual+Studio+AddIns+Every+Developer+Should+Download+Now+Article.aspx</link>
      <pubDate>Sun, 08 Jan 2006 03:21:00 GMT</pubDate>
      <description>They really are the some very essential tools for VS...&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=17aaf0b6-fea2-4a40-a484-86ebb41247cb"/&gt;</description>
      <category>Links</category>
    </item>
    <item>
      <trackback:ping>http://www.pksoftware.net/blog/Trackback.aspx?guid=e2f8d373-ccbb-4d88-af59-c4c08a40cd3b</trackback:ping>
      <pingback:server>http://www.pksoftware.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pksoftware.net/blog/PermaLink,guid,e2f8d373-ccbb-4d88-af59-c4c08a40cd3b.aspx</pingback:target>
      <dc:creator>Paul Kohler</dc:creator>
      <title>Coding Area</title>
      <guid isPermaLink="false">http://www.pksoftware.net/blog/PermaLink,guid,e2f8d373-ccbb-4d88-af59-c4c08a40cd3b.aspx</guid>
      <link>http://www.pksoftware.net/blog/2006/01/02/Coding+Area.aspx</link>
      <pubDate>Mon, 02 Jan 2006 02:21:16 GMT</pubDate>
      <description>This is where I will post code development related articles.&lt;img width="0" height="0" src="http://www.pksoftware.net/blog/aggbug.ashx?id=e2f8d373-ccbb-4d88-af59-c4c08a40cd3b"/&gt;</description>
      <category>Coding</category>
    </item>
  </channel>
</rss>