Understanding Collections
A collection is just what its name implies: a collection of objects. Collections make it easy to work with large numbers of similar objects by enabling you to create code that performs iterative processing on items within the collection. Iterative processing is an operation that uses a loop to perform actions on multiple objects, rather than writing the operative code for each object. In addition to containing an indexed set of objects, collections also have properties and might have methods. Figure 3.8 illustrates the structure of a collection.
Figure 3.8 Collections contain sets of like objects, and they have their own properties and methods.
Continuing with the Dog/Pet object metaphor, think about what an Animals collection might look like. The Animals collection might contain one or more Pet objects, or it might be empty (contain no objects). All collections have a Count property that returns the total count of objects contained within the collection. Collections might also have methods, such as a Delete method used to remove objects from the collection and an Add method used to add a new object to the collection.
To better understand collections, you're going to create a small Visual Basic .NET project that cycles through the Controls collection of a form and tells you the value of the Name property of every control on the form. To create your sample project, follow these steps:
Start Visual Basic now (if it's not already loaded) and create a new Windows Application project titled Collections Example.
Change the name of the form to fclsCollectionsExample using the Solution Explorer and set the form's Text property to Collections Example.
Make this form the Startup object by right-clicking Collections Example in the Solution Explorer window, choosing Properties, and then selecting fclsCollectionsExample from the Startup object drop-down list. Click OK to close the dialog box.
Add a new button to the form by double-clicking the Button tool in the toolbox. Set the button's properties as follows:
Property |
Value |
Name |
|
Text | Show Control Names |
Location | 88,112 |
Size | 120,23 |
-
Next, add some text box and label controls to the form. As you add the controls to the form, be sure to give each control a unique name. Feel free to use any name you like, but you can't use spaces in a control name. You might want to drag the controls to different locations on the form so that they don't overlap.
-
When you're finished adding controls to your form, double-click the Show Control Names button to add code to its Click event. Enter the following code:
Dim intIndex As Integer For intIndex = 0 To Me.Controls.Count - 1 MessageBox.Show("Control #" & intIndex & " has of the name " & _ Me.Controls(intIndex).Name) Next intIndex
NOTE
Every form has a Controls collection, which might or might not contain any controls. Even if no controls are on the form, the form still has a Controls collection.
- The first statement should look familiar to you by now. As with
the Object Example you created earlier, this statement creates a variable
to hold a value. Rather than create a variable that can hold an object, as
you did in the earlier example, this statement creates a variable that can
hold only a number.
The next statement (the one that begins with For) accomplishes a few tasks. First, it initializes the variable intIndex to 0, and then it starts a loop (loops are discussed in Hour 14, "Looping for Efficiency"), incrementing intIndex by one until intIndex equals the number of controls on the form, less one. The reason you subtract one from the Count property is that collections are zero-basedthe first item is always item zero. Thus, the first item is in location zero, the second item is in location one, and so forth. If you tried to reference an item of a collection in the location of the value of the Count property, an error would occur because you would be referencing an index that's one higher than the actual locations within the collection.
The MessageBox.Show() method (mentioned in Hour 2, "Navigating Visual Basic .NET," and discussed in detail in Hour 17, "Interacting with Users") is a class of the .NET Framework that's used to display simple dialog boxes with text. The text that you're providing, which the Show method will display, is a concatenation of multiple strings of text. (Concatenation is the process of adding strings together; it's discussed in Hour 12, "Performing Arithmetic, String Manipulation, and Date/Time Adjustments." )
Run the project by pressing F5 or by clicking Start on the toolbar. Ignore the additional controls that you placed on the form and click the Show Control Names button. Your program will then display a message box similar to the one shown in Figure 3.9 for each control on your form (because of the loop). When the program is finished displaying the names of the controls, choose Stop Debugging from the Debug toolbar to stop the program, and then save the project.
Figure 3.9 The Controls collection enables you to get to each and every control on a form.
Because everything in Visual Basic .NET is an object, you can expect to use numerous collections as you create your programs. Collections are powerful, and the quicker you become comfortable using them, the more productive you'll become.