<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1646814019807108358</id><updated>2011-04-21T19:41:50.683-07:00</updated><title type='text'>Control Array in VB 2005</title><subtitle type='html'>Simple steps for generating control Array in VB.NET</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://arisenmind.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1646814019807108358/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://arisenmind.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Prithiraj Sengupta</name><uri>http://www.blogger.com/profile/11533252754448314940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_UUgq0-NolMA/SFJV1rhDrqI/AAAAAAAAABI/NH9Bs2CBeI8/S220/prithiraj.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1646814019807108358.post-2121680174264546238</id><published>2008-06-13T02:24:00.000-07:00</published><updated>2008-12-11T05:10:21.503-08:00</updated><title type='text'>Introduction</title><content type='html'>I will show you a way to generate control arrays.&lt;br /&gt;&lt;br /&gt;I  created two classes One for generating Control Array and the other one for sorting the arrays according to the tab indexes. Control Arrays are required in many development scenarios. e.g storing control's data in xml file or sending data via the xml string throughout the application. etc etc.&lt;br /&gt;&lt;br /&gt;Generating Control Array can save a lot of valuable time of the developers. Here I will try to explain -&lt;br /&gt;&lt;br /&gt;-How to generate control array?&lt;br /&gt;-How to sort the array of controls?&lt;br /&gt;-Implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Look below at the screen shots of a win form. From these windows I need the input type controls like textboxes, checkboxes, RadioButton and comboboxes. These windows have a good mixture of both container and input kinds of controls . Though the controls are nested inside one another, I will generate an array for all the input type controls only.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UUgq0-NolMA/SFJBP7hDrmI/AAAAAAAAAAs/jHOaYsICv-Y/s1600-h/PT.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_UUgq0-NolMA/SFJBP7hDrmI/AAAAAAAAAAs/jHOaYsICv-Y/s320/PT.JPG" alt="" id="BLOGGER_PHOTO_ID_5211299460751273570" border="0" /&gt;&lt;/a&gt;&lt;ul style="text-align: center;"&gt;&lt;li&gt;Profile Tab - Edit Company Profile window&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UUgq0-NolMA/SFJBeLhDrnI/AAAAAAAAAA0/CEXmqwm4n4o/s1600-h/DT.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_UUgq0-NolMA/SFJBeLhDrnI/AAAAAAAAAA0/CEXmqwm4n4o/s320/DT.JPG" alt="" id="BLOGGER_PHOTO_ID_5211299705564409458" border="0" /&gt;&lt;/a&gt;&lt;ul style="text-align: center;"&gt;&lt;li&gt;Default Tab - Edit Company Profile window&lt;/li&gt;&lt;/ul&gt;Here, I have posted two classes and one implementaion(codes under form_load event) code. Under each classes I have detailed the work. I will advice the readers to go through the complete documentation for each classes before copying the respective codes.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;** Before using the codes you must set the correct tab orders for the controls. Use Tab Index property from the Property Window.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ControlArrayGenerator.vb&lt;/span&gt;&lt;/span&gt;: This class will generated arraylist for all the controls from a form.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'@Author Prithiraj Sengupta&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Imports&lt;/span&gt;&lt;span style=""&gt; System.Collections&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Public&lt;/span&gt;&lt;span style=""&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt; ControlArrayGenerator&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt; inputArray(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; frm)&lt;span style="color:green;"&gt;'frm is Form type. inputArray(Me)&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; Control&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; alist &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; ArrayList&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; CSort &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; ControlArraySort&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; arr &lt;span style="color:blue;"&gt;As&lt;/span&gt; ArrayList&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ar &lt;span style="color:blue;"&gt;As&lt;/span&gt; array&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; &lt;span style="color:blue;"&gt;Each&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;In&lt;/span&gt; frm.Controls&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;alist = inputReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt; ctl&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;        &lt;/span&gt;arr = CSort.SortControlTabIndex(alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;ar = arr.ToArray&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Return&lt;/span&gt; arr&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt; inputReader(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; ctl, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; alist)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                                              &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Try&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; TextBox &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                &lt;/span&gt;alist.Add(ctl)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; ComboBox &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                &lt;/span&gt;alist.Add(ctl)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; CheckBox &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                &lt;/span&gt;alist.Add(ctl)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; RadioButton &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                &lt;/span&gt;alist.Add(ctl)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; Panel &lt;span style="color:blue;"&gt;And&lt;/span&gt; ctl.Controls.Count &gt;= 1 &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;panelReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; GroupBox &lt;span style="color:blue;"&gt;And&lt;/span&gt; ctl.Controls.Count &gt;= 1 &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                &lt;/span&gt;groupboxReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; &lt;span style="color:blue;"&gt;TypeOf&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;Is&lt;/span&gt; TabControl &lt;span style="color:blue;"&gt;And&lt;/span&gt; ctl.Controls.Count &gt;= 1 &lt;span style="color:blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;          &lt;/span&gt;TabControlReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;              &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:blue;"&gt;As&lt;/span&gt; Exception&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; err &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;err = ex.ToString&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;err = err&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Return&lt;/span&gt; alist&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; panelReader(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; ctl, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; &lt;span style="color:blue;"&gt;Each&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;In&lt;/span&gt; ctl.controls&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;inputReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt; ctl&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; groupboxReader(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; ctl, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; &lt;span style="color:blue;"&gt;Each&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;In&lt;/span&gt; ctl.controls&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;inputReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;              &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; TabControlReader(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; ctl, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; &lt;span style="color:blue;"&gt;Each&lt;/span&gt; ctl &lt;span style="color:blue;"&gt;In&lt;/span&gt; ctl.Controls&lt;br /&gt;&lt;span style=""&gt;            &lt;/span&gt;inputReader(ctl, alist)&lt;br /&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;End&lt;/span&gt;&lt;span style=""&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;ControlArraySort.vb&lt;/span&gt;: This class will sort the controls in the arraylist according the tab index of the respective controls.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'@Author Prithiraj Sengupta&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Imports&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt; System&lt;/span&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Public&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt; ControlArraySort&lt;br /&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt; SortControlTabIndex(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; aList &lt;span style="color:blue;"&gt;As&lt;/span&gt; ArrayList)&lt;br /&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; arrCount &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;/span&gt; = aList.Count&lt;br /&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; i, j, Tb, Tb_next &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Integer&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; i = 1 &lt;span style="color:blue;"&gt;To&lt;/span&gt; arrCount - 1&lt;br /&gt;&lt;span style="color:blue;"&gt;For&lt;/span&gt; j = 1 &lt;span style="color:blue;"&gt;To&lt;/span&gt; arrCount - i&lt;br /&gt;Tb = aList.Item(j - 1).TabIndex&lt;br /&gt;Tb_next = aList.Item(j).TabIndex&lt;br /&gt;&lt;span style="color:blue;"&gt;If&lt;/span&gt; Tb &gt; Tb_next &lt;span style="color:blue;"&gt;Then&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; Obj &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;br /&gt;&lt;/span&gt;Obj = aList.Item(j)&lt;br /&gt;aList.Item(j) = aList.Item(j - 1)&lt;br /&gt;aList.Item(j - 1) = Obj&lt;br /&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt; j&lt;br /&gt;&lt;span style="color:blue;"&gt;Next&lt;/span&gt; i&lt;br /&gt;&lt;span style="color:blue;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:blue;"&gt;As&lt;/span&gt; Exception&lt;br /&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; x &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;br /&gt;&lt;/span&gt;x = ex.ToString&lt;br /&gt;x = x&lt;br /&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Try&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;Return&lt;/span&gt; aList&lt;br /&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Function&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Implementation&lt;/span&gt;&lt;/span&gt;: The codes below are the implementation of ControlArrayGenerator class from Form_Load event of an application form containing number of controls.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;      &lt;p class="MsoNormal" style=""&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;  &lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Need to call from the form_load event.&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;Dim&lt;/span&gt;&lt;span style=""&gt; arr &lt;span style="color:blue;"&gt;As&lt;/span&gt; Array&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; cag &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; ControlArrayGenerator&lt;br /&gt;arr=cag. inputArray(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;)&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The &lt;span style="color: rgb(204, 102, 204);"&gt;arr&lt;/span&gt; variable in the QuickWatch window:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UUgq0-NolMA/SFJO1rhDroI/AAAAAAAAAA8/KCrdIqvj7fk/s1600-h/QuickWatch-ControlArrays.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_UUgq0-NolMA/SFJO1rhDroI/AAAAAAAAAA8/KCrdIqvj7fk/s320/QuickWatch-ControlArrays.JPG" alt="" id="BLOGGER_PHOTO_ID_5211314402942496386" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style=""&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 153, 0);font-size:180%;" &gt;Explanation :&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;Imports System.Collections&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Need to import system.collections to get the ArrayList Class.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;Dim ctl As New Control&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Dim alist As New ArrayList&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Dim CSort As New ControlArraySort&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Dim arr As ArrayList&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Dim ar As array&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ctl&lt;/span&gt; is the object of type Control class. visit &lt;/span&gt;&lt;a href="http://http//msdn.microsoft.com/en-us/library/system.windows.forms.control.aspx"&gt;&lt;span style="font-size:100%;"&gt;http://msdn.microsoft.com/en-us/library/system.windows.forms.control.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt; for details. Control class is the base class for controls.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;alist&lt;/span&gt; is the instance of ArrayList class. aList will add the controls on it during excecution of the above code.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;cSort&lt;/span&gt; is the Object instance for the class ControlArraySort. This class is created to sort the arraylist object of the controls according to the tab indexes of these controls.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;arr&lt;/span&gt; is also a instance of ArrayList. This variable will have the return sorted list from the ControlArraySort Class.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ar&lt;/span&gt; is the final Array containing the sorted list of all the controls. This variable containing the sorted control array will be returned by function&lt;span style="color: rgb(51, 51, 255);"&gt; inputArray(ByVal frm)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt; For Each ctl In frm.Controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            alist = inputReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Next ctl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A form can have number of controls like, TabControls, Panels, GroupBoxes, TextBoxes, Buttons, RadioButtons, CheckBoxes, ComboBoxes and many others. So, for each controls the a function inputReader() will be called. This function will return the unordered list of control Arrays. The details for inputReader function is detailed below.&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;Private Function inputReader(ByVal ctl, ByVal alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is TextBox Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                alist.Add(ctl)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is ComboBox Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                alist.Add(ctl)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is CheckBox Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                alist.Add(ctl)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is RadioButton Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                alist.Add(ctl)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is Panel And ctl.Controls.Count &gt;= 1 Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                panelReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is GroupBox And ctl.Controls.Count &gt;= 1 Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                groupboxReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            If TypeOf ctl Is TabControl And ctl.Controls.Count &gt;= 1 Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                TabControlReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Catch ex As Exception&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            Dim err As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            err = ex.ToString&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            err = err&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        End Try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Return alist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    End Function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    Private Sub panelReader(ByVal ctl, ByVal alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        For Each ctl In ctl.controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            inputReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Next ctl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    End Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    Private Sub groupboxReader(ByVal ctl, ByVal alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        For Each ctl In ctl.controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            inputReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Next&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    End Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    Private Sub TabControlReader(ByVal ctl, ByVal alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        For Each ctl In ctl.Controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            inputReader(ctl, alist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Next&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have detailed the above codes in two cases. These cases will make it easy to understand the function inputReader.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Case.1.&lt;/span&gt;&lt;br /&gt;If a control is of type Text box. When the function &lt;span style="color: rgb(51, 51, 255);"&gt;inputReader&lt;/span&gt; is called from inside the for loop, 1st condition will be satisfied and the code &lt;span style="color: rgb(51, 51, 255);"&gt;alist.Add(ctl)&lt;/span&gt; will be executed. The Object of the text box from the Form will get added to the &lt;span style="color: rgb(51, 51, 255);"&gt;alist&lt;/span&gt; of type ArrayList class.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Case.2.&lt;/span&gt;&lt;br /&gt;This will explain the &lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;recusive&lt;/span&gt; part of the program.&lt;br /&gt;If a control is of type GroupBox and if it contains atleast one control. The condition&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;  If TypeOf ctl Is GroupBox And ctl.Controls.Count &gt;= 1 Then&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;will get satisfied. So the function &lt;span style="color: rgb(51, 51, 255);"&gt;groupboxReader(ctl,alist)&lt;/span&gt; will get executed. The function &lt;span style="color: rgb(51, 51, 255);"&gt;inputReader&lt;/span&gt; is again called to check whether the groupbox has any input type controls like textboxes, checkboxes and comboxes. If it has any input type controls the control will get added to the &lt;span style="color: rgb(51, 51, 255);"&gt;alist&lt;/span&gt;(of type ArrayList). This case 2 is recursive. This can be well understand by debuging a winform having controls inside the groupboxes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ControlArraySort.&lt;br /&gt;&lt;br /&gt;I used boolean sorting algorithm for sorting the array list according to the &lt;span style="font-weight: bold; color: rgb(153, 51, 153);"&gt;Tab Indexes&lt;/span&gt;.&lt;br /&gt;The following code be executed to call the &lt;span style="color: rgb(51, 51, 255);"&gt;sortControlTabIndex(alist)&lt;/span&gt; from the &lt;span style="color: rgb(51, 51, 255);"&gt;ControlArraySort&lt;/span&gt; class.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; arr = CSort.SortControlTabIndex(alist)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style="color: rgb(0, 153, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;Conclusion:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We have successfully generated by the use of the two simple classes. The Classes are&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;-ControlArrayGenerator.vb&lt;br /&gt;-ControlArraySort.vb&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;With these two classes we can generate control arrays for our applications. The codes here can be modified and applied to the applications as needed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1646814019807108358-2121680174264546238?l=arisenmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://arisenmind.blogspot.com/feeds/2121680174264546238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1646814019807108358&amp;postID=2121680174264546238' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1646814019807108358/posts/default/2121680174264546238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1646814019807108358/posts/default/2121680174264546238'/><link rel='alternate' type='text/html' href='http://arisenmind.blogspot.com/2008/06/introduction.html' title='Introduction'/><author><name>Prithiraj Sengupta</name><uri>http://www.blogger.com/profile/11533252754448314940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_UUgq0-NolMA/SFJV1rhDrqI/AAAAAAAAABI/NH9Bs2CBeI8/S220/prithiraj.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UUgq0-NolMA/SFJBP7hDrmI/AAAAAAAAAAs/jHOaYsICv-Y/s72-c/PT.JPG' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
