<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">John Spano's Blog CTO and Cofounder of NeoTekSystems</title><subtitle type="html">Home for developer ideas and news</subtitle><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2005-06-07T13:37:00Z</updated><entry><title>Diskeeper</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2007/04/22/90.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2007/04/22/90.aspx</id><published>2007-04-22T14:29:00Z</published><updated>2007-04-22T14:29:00Z</updated><content type="html">&lt;P&gt;I downloaded Diskeeper the other day and installed it.&amp;nbsp; I'm pretty impressed with it.&amp;nbsp; It was an easy install and once I set it up, it just runs.&amp;nbsp; I haven't had to mess with it since.&amp;nbsp; It has kept my drive perfect for a while now.&lt;/P&gt;
&lt;P&gt;If you want to check it out, you can go &lt;A href="http://www.diskeeper.com/defrag.asp"&gt;here&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It works on Vista also, though I only ran it on XP.&amp;nbsp; They also have some extra features if you're a network admin to control and defrag you're entire network.&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=90" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>HEad First Object Oriented Analysis and Design</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2007/01/07/88.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2007/01/07/88.aspx</id><published>2007-01-07T16:26:00Z</published><updated>2007-01-07T16:26:00Z</updated><content type="html">&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I'm almost to the end of Head First Object-Oriented&amp;nbsp;Analysis and Design from O'Reilly and I must say it's an excellent book.&amp;nbsp; It's very easy to read like all the Head First books and very informative.&amp;nbsp; I got through most of it while waiting on my wife to have a root canal at the dentist (yuck!).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I like it's structure the most.&amp;nbsp; It takes you from a first try perspective and then refactors the code until you have a good object oriented design.&amp;nbsp; This mimics most programmers style; just shoot from the hip and go back and make it better later.&amp;nbsp; It shows you why the from the hip code is bad and how to make it better.&amp;nbsp; Hopefully this book will help you stop doing that and shoot right for the good design up front.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stuff covered is of course object oriented design along with&amp;nbsp;single responsibility, some uml and the basic principles of object oriented coding like encapsulation and delegation.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I think this book will be good for anybody new to object oriented design as it teaches you the basic principles of it,&amp;nbsp;and also people that already have a good background in it to brush up on your skills and design choices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I'll be doing a more indepth review of it later after I finish it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ISBN: 0596008678&lt;/P&gt;
&lt;P&gt;By O'Reilly&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=88" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Infragistics 6.3</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/12/22/87.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/12/22/87.aspx</id><published>2006-12-23T01:57:00Z</published><updated>2006-12-23T01:57:00Z</updated><content type="html">&lt;P&gt;I downloaded and checked out &lt;A href="http://infragistics.com/"&gt;Infragistics's&lt;/A&gt;&amp;nbsp;NetAdvantage 6.3 the other day.&amp;nbsp; If you do a lot of UI work and like to make your apps look good, I definately would suggest you check them out.&amp;nbsp; They support ribbon like Office 2007 and have several cool features like the AppStylist which lets you apply custom styles easily to your apps and formatted tooltips.&amp;nbsp; They're easy to work with also, having a powerful object model.&lt;/P&gt;
&lt;P&gt;If you do a lot of web work, they have a whole suite of ajax controls and a good looking grid for Asp.Net.&lt;/P&gt;
&lt;P&gt;If anyone uses them, post your cool ideas or styles for look and feel in your apps.&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=87" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Google homepage</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/09/01/83.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/09/01/83.aspx</id><published>2006-09-02T02:49:00Z</published><updated>2006-09-02T02:49:00Z</updated><content type="html">&lt;P&gt;If you haven't heard yet, Google has come&amp;nbsp;out with a customizable home page that allows you to put modules on&amp;nbsp;it.&amp;nbsp; The modules can be very diverse allowing you to create a pretty cool or useful homepage.&amp;nbsp; I threw a few together.&amp;nbsp; Some useful, some not :)&lt;/P&gt;
&lt;P&gt;You can check them out &lt;A href="http://www.googlemodules.com/?q=neoteksystems&amp;amp;mode=showSearchResults"&gt;here.&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=83" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>unit testing and mocking frameworks</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/08/29/82.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/08/29/82.aspx</id><published>2006-08-30T01:12:00Z</published><updated>2006-08-30T01:12:00Z</updated><content type="html">&lt;P&gt;If you know me, you'll know that I am the last one to advocate unit tests :)&lt;/P&gt;
&lt;P&gt;I have always disliked them for the simple fact, that in a real project, you have to do a TON of wire up just to get the unit test to work.&amp;nbsp; Connect to a db most of the time, do a bunch of setup etc etc.&amp;nbsp; I usually find that the tests take almost as much time to code as the actual app.&lt;/P&gt;
&lt;P&gt;Well recently a friend of mine told me to check out TypeMock.&amp;nbsp; I had never heard of mocking frameworks before.&amp;nbsp; It was a new experience.&lt;/P&gt;
&lt;P&gt;After getting a copy, I started looking at what it does to help fix all the problems I find with unit tests.&amp;nbsp; It allows you to "mock" any object in your system.&amp;nbsp; Mocking means that it will intercept calls to your real objects and return "fake" objects for you to use in your testing.&lt;/P&gt;
&lt;P&gt;For instance, say I want to test a class that does calculations.&amp;nbsp; In that class, a call is made to the database to fill out some basic numbers in the class that are used to perform the calculations.&amp;nbsp; With standard testing you have to wire up the db call, make sure you have a good db etc, just to test the calculate method.&amp;nbsp; With TypeMock, I can intercept the call to the db object and return any value I want.&amp;nbsp; IE the calculate class thinks it hit the db and now my unit test can just test the calculations to see if they're right.&lt;/P&gt;
&lt;P&gt;It has a ton of features, way to many to list here, but some that stood out are the ability to mock a whole object, specific functions of an object, specific properties, multiple return values depending on input, a reflection module so&amp;nbsp; you can mock anything, even if it isn't public and many others.&lt;/P&gt;
&lt;P&gt;I highly suggest you check it out if you do unit tests, or you were like me and didn't like them.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.typemock.com/"&gt;http://www.typemock.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=82" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Dot Net 3.0</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/23/81.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/23/81.aspx</id><published>2006-06-24T02:52:00Z</published><updated>2006-06-24T02:52:00Z</updated><content type="html">&lt;P&gt;Microsoft as merged Dot Net 3.0 with WinFX.&amp;nbsp; Not only will you have the standard base class libraries, but all of WinFX (WPF, WCF, WF and WCS) will be part of the base framework now.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Read more &lt;A href="http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx"&gt;here&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=81" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Microsoft's been busy</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/12/80.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/12/80.aspx</id><published>2006-06-12T20:52:00Z</published><updated>2006-06-12T20:52:00Z</updated><content type="html">&lt;P&gt;Microsoft announced a new developer edition of vs.net for dba's.&amp;nbsp; It looks like it may provide some cool new tools like source control of base line scripts etc.&lt;/P&gt;
&lt;P&gt;Check it out &lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/products/dbpro/default.aspx"&gt;Here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;They also have been working on some new security stuff that may prove interesting.&amp;nbsp; It's called &lt;A href="http://www.microsoft.com/forefront/default.mspx"&gt;ForeFront&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=80" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>FlowLayout Panel</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/11/79.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/11/79.aspx</id><published>2006-06-11T20:23:00Z</published><updated>2006-06-11T20:23:00Z</updated><content type="html">&lt;P&gt;I found a neat control in vs.net 2005 the other day.&amp;nbsp; Sometimes you need a control that will turn parts of itself off and on visibly.&amp;nbsp; When parts turn off,&amp;nbsp; you want to move the other parts of the form around on the form to eliminate gaps in the form.&lt;/P&gt;
&lt;P&gt;For instance, think of several checkboxes that are vertically spaced down the windows form.&amp;nbsp; Depending on the client viewing the form, you may want to remove a checkbox for them.&amp;nbsp; It was a pain in the past to position the checkboxes below the one you&amp;nbsp;removed.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Well with the FlowLayoutPanel, you no longer have to calculate positions.&amp;nbsp; It will do this for you.&amp;nbsp; It works similar to the web page flow layout principal.&amp;nbsp; When the one check box becomes invisible, the rest "snap" up to remove spacing between them.&amp;nbsp; This control lets you make comples windows forms very easily.&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=79" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>South Carolina Code Camp</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/10/78.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2006/06/10/78.aspx</id><published>2006-06-11T01:54:00Z</published><updated>2006-06-11T01:54:00Z</updated><content type="html">&lt;P&gt;Another code camp is coming to South Carolina!&amp;nbsp; There will be many great sessions available to learn from.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to get some more info or wish to help out by volunteering or speaking, you can check it out here:&amp;nbsp;&lt;A href="http://gspdevelopers.org/CodeCamp/tabid/154/Default.aspx"&gt;GspDevelopers.org&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=78" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>For each loop gotcha</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/09/09/54.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/09/09/54.aspx</id><published>2005-09-09T15:55:00Z</published><updated>2005-09-09T15:55:00Z</updated><content type="html">&lt;P&gt;Take the following code: &lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; ar &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; ArrayList = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; ArrayList&lt;/P&gt;
&lt;P&gt;ar.Add(1)&lt;/P&gt;
&lt;P&gt;ar.Add(2)&lt;/P&gt;
&lt;P&gt;ar.Add(3)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;For&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Each&lt;/FONT&gt;&lt;FONT size=2&gt; o &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;In&lt;/FONT&gt;&lt;FONT size=2&gt; ar&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; total &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Double&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;total += 2&lt;/P&gt;
&lt;P&gt;MessageBox.Show(total.ToString)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Next&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000 size=3&gt;The compiler actually moves the dim statement out of the loop so you get output of 2, 4 and 6 as the loop goes through.&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000 size=3&gt;This doesn't happen in c# as the compiler won't allow you to use double total;&amp;nbsp; It forces you to write double total = 0; which fixes the problem.&amp;nbsp; You could also add a total = 0 after the message box line to fix it.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=54" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>My English</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/09/38.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/09/38.aspx</id><published>2005-06-09T02:02:00Z</published><updated>2005-06-09T02:02:00Z</updated><content type="html">&lt;P&gt;Well, here is my english.&amp;nbsp; Hmmm, I guess the Yankee is from my mother who is a yankee....&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 align=center&gt;

&lt;TR&gt;
&lt;TD&gt;55% General American English&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;35% Dixie&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10% Yankee&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0% Midwestern&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0% Upper Midwestern&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=38" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Single Instance of a Windows Form With the Singleton Pattern</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/08/36.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/08/36.aspx</id><published>2005-06-08T18:21:00Z</published><updated>2005-06-08T18:21:00Z</updated><content type="html">People have asked me this a lot lately so I am going to show how to use the Singleton design pattern to create a form that has only one instance of itself.&lt;BR&gt;The first thing you want to do is make your constructor of the form private. This is to ensure programmers don't create instances of the form, but use the one that already exists. &lt;BR&gt;&lt;BR&gt;Just change the public to private: &lt;BR&gt;&lt;BR&gt;&lt;B&gt;Code:&lt;/B&gt; 
&lt;DIV id=CODE&gt;&lt;FONT class=k&gt;Private&lt;/FONT&gt; &lt;FONT class=k&gt;Sub&lt;/FONT&gt; &lt;FONT class=k&gt;New&lt;/FONT&gt;() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyBase.&lt;FONT class=k&gt;New&lt;/FONT&gt;() &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT class=c&gt;'This call is required by the Windows Form Designer. &lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent() &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT class=c&gt;'Add any initialization after the InitializeComponent() call &lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT class=k&gt;End&lt;/FONT&gt; &lt;FONT class=k&gt;Sub&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;Next, we are going to add a method to the form that will return the current instance of the form. We also add a class level variable to hold the form instance. &lt;BR&gt;&lt;BR&gt;&lt;B&gt;Code:&lt;/B&gt; 
&lt;DIV id=CODE&gt;&lt;FONT class=k&gt;Private&lt;/FONT&gt; Shared _Instance &lt;FONT class=k&gt;As&lt;/FONT&gt; form1 = &lt;FONT class=k&gt;Nothing&lt;/FONT&gt; &lt;BR&gt;&lt;BR&gt;&lt;FONT class=k&gt;Public&lt;/FONT&gt; Shared &lt;FONT class=k&gt;Function&lt;/FONT&gt; Instance() &lt;FONT class=k&gt;As&lt;/FONT&gt; form1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT class=k&gt;If&lt;/FONT&gt; _Instance &lt;FONT class=k&gt;Is&lt;/FONT&gt; &lt;FONT class=k&gt;Nothing&lt;/FONT&gt; OrElse _Instance.IsDisposed = &lt;FONT class=k&gt;True&lt;/FONT&gt; &lt;FONT class=k&gt;Then&lt;/FONT&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Instance = &lt;FONT class=k&gt;New&lt;/FONT&gt; form1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT class=k&gt;End&lt;/FONT&gt; &lt;FONT class=k&gt;If&lt;/FONT&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_Instance.BringToFront() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT class=k&gt;Return&lt;/FONT&gt; _Instance &lt;BR&gt;&lt;FONT class=k&gt;End&lt;/FONT&gt; &lt;FONT class=k&gt;Function&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;This method checks to see if an instance of the form is already open, and if so shows it. &lt;BR&gt;&lt;BR&gt;To call the form from other MDI windows or forms, you do the following: &lt;BR&gt;&lt;BR&gt;&lt;B&gt;Code:&lt;/B&gt; 
&lt;DIV id=CODE&gt;&lt;FONT class=k&gt;Dim&lt;/FONT&gt; MyForm &lt;FONT class=k&gt;As&lt;/FONT&gt; form1 &lt;BR&gt;MyForm = form1.Instance &lt;FONT class=c&gt;'Decare our variable = to the existing instance of the form &lt;/FONT&gt;&lt;BR&gt;MyForm.MdiParent = &lt;FONT class=k&gt;Me&lt;/FONT&gt; &lt;FONT class=c&gt;'if we have an mdi parent window &lt;/FONT&gt;&lt;BR&gt;MyForm.Show() &lt;FONT class=c&gt;'this shows the current instance of the form&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;As you can see it's simple to use the Singleton pattern to create one instance forms. This pattern can also be used for any object you want to have a single instance of.&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=36" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry><entry><title>Brand New Blog</title><link rel="alternate" type="text/html" href="http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/07/31.aspx" /><id>http://blogs.neoteksystems.com/blogs/john_spanos_blog/archive/2005/06/07/31.aspx</id><published>2005-06-07T12:37:00Z</published><updated>2005-06-07T12:37:00Z</updated><content type="html">&lt;P&gt;Just dusting off this new blog...&lt;/P&gt;
&lt;P&gt;More to come&lt;/P&gt;&lt;img src="http://blogs.neoteksystems.com/aggbug.aspx?PostID=31" width="1" height="1"&gt;</content><author><name>jspano</name><uri>http://blogs.neoteksystems.com/members/jspano.aspx</uri></author></entry></feed>
