Introduction to Visual Studio .NET
Paul D. Sheriff
Summary: Introduces many of the different configurations, settings, and windows in Visual Studio .NET, to help developers take full advantage of the powerful new IDE. (21 printed pages)
- Learn to start a new project with Microsoft® Visual Studio® .NET
- Learn how to configure your development environment
The following should be true for you to get the most out of this document:
- You have access to a copy of Visual Studio .NET
- You are familiar with Microsoft® Visual Basic® coding
To get the most out of Visual Studio .NET, you will most likely wish to tailor it to suit your style of working. With the wide variety of configuration options, both familiar and new, you'll want to take the time examine some of the various options you can set.
In this document, you will be introduced to many of the different configurations and learn about the various settings in Visual Studio .NET. You will also learn about the different types of windows, including Tool windows, which can be docked to the environment or free floating, and you'll learn about Document windows.
The first time you use Visual Studio .NET, you will be prompted for some configuration information about how you will use the environment most often. Figure 1 shows an example of the My Profile screen.
My Profile Screen
The My Profile Screen allows you to set some overall environment defaults.
Figure 1. Set the configuration on the My Profile Screen
Table 1 provides a listing of some of the options on the My Profile screen.
Table 1: Fields on the My Profile screen
|Profile||Set this field to the type of development you will be doing most often. You have the option of choosing among Visual Studio, Visual Basic, Microsoft® Microsoft Visual C++®, Microsoft Visual InterDev®, or Microsoft Visual C#™.|
|Keyboard Scheme||Change the default keys that you use to perform certain tasks by setting this option to Visual Studio Default, Visual Basic 6.0, Visual C++ 2.0, Visual C++ 6.0, or Visual Studio 6.0 and others.|
|Window Layout||Set the default window layout to Visual Studio Default, Visual Basic 6.0, Visual C++6.0, Student Window Layout, or No Tools Window Layout.|
|Help Filter||Set the default filter for Help content. This determines which language definitions and examples show up in the Help window when you press F1 or view any Help topics.|
|Show Help||Choose to view Help in a separate window or integrated into the IDE.|
|At Startup Show||When you start a new instance of Visual Studio .NET, you have the option of showing the Visual Studio Start Page, the Most Recent Solution, the Open Project dialog box, or the New Project Dialog box. You can also have it default to an empty environment.|
Visual Studio Start Page
If you choose to have the start-up page as the Visual Studio Start Page, you will see a screen that looks similar to Figure 2.
Figure 2. The Visual Studio Start page allows you to start a recent project, open an existing project, or create a new project
On this screen, there is a menu on the left side that will let you link to a What's New Help menu. You can see a list of online community links, where you can get assistance with Visual Studio .NET and many other Microsoft products. You can get the headlines for MSDN news, and you have the ability to Search the MSDN site for information related to Visual Studio. You can also reset your profile.
On the Get Started page you can select a recent project, create a new project, or open an existing project.
Creating a New Project
In Visual Studio .NET, if from the File menu you click New and then Project, you will see a dialog that looks like Figure 3. When putting together an application in Visual Studio .NET, you may have multiple projects. The set of projects together make up what is called a Solution.
Figure 3. The New Project dialog box allows you to create a new Solution of a particular project type
On the left side of this screen, you can choose what type of project you will be creating. Depending on the options you selected when you installed your Visual Studio environment, you can choose from a Visual Basic .NET, C#, C++, and possibly other programming languages. Not all of these languages for Visual Studio come from Microsoft; there are other companies developing applications that will use the .NET Framework.
On the right side of this screen, you can choose a default template for the type of project you will be creating. There are many different templates to choose from. Table 2 provides a list of some of these project template types.
Prior to adding a new project to this solution, you need to set the Name and Path where this project will reside on your hard drive. Fill in the path for where you want this project to reside in the Location text box. Visual Studio .NET creates the necessary path, and will create a folder name with the same name as the project. For example, if you fill in the Name LoginTest, and set the Path to D:\MySamples, this solution will be created in D:\MySamples\LoginTest\LoginTest.sln.
Table 2 lists a variety of project types that you might undertake with Visual Studio .NET.
Table 2. Project types you can create with Visual Studio .NET
|Windows Application||Template for creating a normal Microsoft® Windows® application.|
|Class Library||Template for creating classes that will be used in other applications. Similar to a DLL|
|Control Library||Template for creating controls that will be used on Windows Forms.|
|ASP.NET Web Application||Template for creating a Web site with static or dynamic HTML pages as the user interface.|
|ASP.NET Web Service||Template for creating Web Services that can be called through XML SOAP interfaces.|
|Web Control Library||Template for creating your own controls that will be called from Web applications.|
|Console Application||Template creating command-line applications.|
|Windows Service||Template for creating your own service that runs in the Windows environment.|
|Empty Project/Empty Web Project||Creates an empty project that you can use to build whatever you want. No templates will be supplied.|
Visual Studio Integrated Development Environment (IDE)
When you start a new project in Visual Studio .NET, you will see a group of windows opened within the environment (see Figure 4). The following sections in this document describe each of the windows.
Figure 4. There will be several windows open when you start a new Visual Studio .NET project
On this main screen, you see a list of menus going across the top of the environment. From these menus you can perform actions that will affect your project. Just below the menus are a series of toolbars that give you shortcuts to menu items. On the left side of the Visual Studio environment you see a graphic depicting a Server Explorer window that can appear when you hover your mouse over the graphic. You also see a graphic that represents a Toolbox window that can fly out when you hover your mouse over it. You will learn more about these windows later in this document.
Note Depending on which options you choose in your Profile, your environment may look different. The above screen shot shows the default for a Visual Basic Developer.
On the right side of the screen, you see the Solution Explorer window. This is where you will see one or more projects that make up the solution you are working on. All of the files for each solution are listed within this window. Just below the Solution Explorer window is the Properties window. This window contains a list of attributes for the object within the environment that is currently highlighted (see Figure 4).
Let's explore each of these windows, as well as others that are available through some of the menu items.
This window holds a list of controls that you can drag onto your forms. There are different sets of controls available, depending on the type of designer that is active in the editor. If you are designing Windows Forms, you will get a specific set of tools that work with Windows Forms. If you are designing a Web Form, you will get a specific set of tools for working with Web Controls. If you are designing an XML document, there will be other options you can choose. To view the Toolbox window, from the View menu in Visual Studio .NET, click Toolbox.
Customizing the Toolbox
If you wish to customize which tools are displayed in the toolbox, or if you wish to add any additional .NET components, Microsoft® ActiveX® controls, or third-party controls to the toolbox, click Tools and then Customize Toolbox to display the Customize Toolbox dialog box, as shown in Figures 5 and 6. Figure 5 shows the ActiveX (COM) components that you can add to the toolbox, and Figure 6 shows the .NET controls you can add to the toolbox.
Figure 5. Customize Toolbox lets you add COM/ActiveX controls to your toolbox
Figure 6. You can also use the Customize Toolbox dialog to choose which .NET Framework components are displayed in the toolbox
Solution Explorer Window
A set of projects that are part of the same application in Visual Studio .NET is called a Solution. The Solution Explorer window shows you a tree view list of each project, each project's references, and each project's components. If this window is closed, you can open it from the View menu by clicking Solution Explorer. Components may be made up of forms, classes, modules, and any other file types it takes to create your application. Double-click on an item in order to edit that item within the IDE.
Figure 7. The Solution Explorer gives you a graphical representation of all of the files that make up your project(s)
Across the top of this window, there is a series of buttons. These will change based on the item you have selected in the Solution Explorer window. Table 3 describes some of these buttons starting with the left and proceeding right.
Table 3. Buttons on the Solution Explorer window
|View Code||Displays the code for the file that has focus in the Solution Explorer.|
|View Designer||Displays the designer for the specific file that has focus in the Solution Explorer.|
|Refresh||Refreshes the Solution Explorer.|
|Show All Files||Displays all files, including any code behind form files.|
|Properties||Displays the properties for the selected file.|
Class View Window
When you start creating a large number of classes, you may want to see a list of all of the properties and methods that are available in those classes. You can use the Class View window, as shown in Figure 8, to get a good overview of these items. To bring up this window, on the View menu, click Class View. Once the window is displayed, you can expand each item in the list to see the properties and methods. If you choose any of these properties or methods, you can right-click and you'll see a menu of actions that apply directly to the definition of that method or property. Once you see the classes in this window, you can double-click on any one of them to have them displayed in the editor.
Figure 8. The Class View is an excellent way to view all the properties and methods of your classes
Server Explorer Window
The Server Explorer window allows you to view the various services that are available on a particular server. These services include Crystal Reports Services, Event Logging, Message Queues, Performance Counters, Other Services, and Database services like SQL Server.
For most of these services, you can drill into each one, see a list of existing items or even add new items. You can drag a service from this window onto a design surface, so you can interact with this element programmatically in your application. For example, you can drag a performance counter onto a Windows Form and use that component to increment or decrement that counter. You could also drag a database table onto a form, and it will automatically create a connection and a DataAdapter component that you can use to retrieve data from that table.
When working with classes such as text boxes and forms, you will most likely need to change certain attributes about those classes. To bring up the Properties window, on the View menu click Properties Window (F4). (See Figure 9.) Once this window is up, you can either view the list alphabetically or categorized by attribute. Properties within this window can be selected either from a list or by clicking a button to bring up a dialog box. There may be others you type some text into, like the Text property that is used to change the title of a form.
Figure 9. The Properties window is where you will spend a lot of time
Object Browser Window
Similar to the Class View window, the Object Browser dialog box shows you a list of classes and their respective properties and methods. The main difference between these two tools is the Object Browser allows you to browse all referenced components, not just the components for the current project like the Class View window does. A nice feature of the Object Browser is that it also shows you the full declaration for the method or property. To bring up the Object Browser, on the View menu, click Other Windows and then Object Browser.
Tip If you wish to see components that are not referenced by your projects, you can add them using the "customize" button on the toolbar. They will not be added as references, only shown in the Object Browser for your convenience.
Task List Window
There is a Task List window that is the central location for you to peruse user tasks, build errors, or issues in your code (comment tasks). To bring up the Task List window, on the View menu, click Other Windows and then Task List. You will then see a window appear in your design environment that looks like Figure 10. To add a new task, you can click where the window says, "Click here to add a new task," or you can add comments in a specific format right in the code of your project. The default comment that adds to the Task List looks like this:
'TODO: Finish calculations in this routine.
Use TODO: after the comment mark, and the task list will pick it up. You can double-click a task to take you directly to that comment in your code.
Figure 10. Tasks can help you organize your thoughts on what needs to be done to complete your project
To add a new task, click on the first line in this box where the words "Click here to add a new task" are located in the Description column.
You may also use the Task List to take you back a line of code somewhere in your project. You do this by right-clicking on a line of code in your editor and choosing the "Add a Task List Shortcut" from the context menu.
There are two types of windows in the Visual Studio .NET IDE: Tool windows and Document windows. Tool windows are listed in the View menu and other menus such as the Debugger. These menus can change based on the current application and the various add-ins you may have installed. Document windows are those windows that you open for editing some item in your project.
The windows you have learned about in this document, including the Toolbox, Solution Explorer, Properties, and Server Explorer, are tool windows. You can manipulate and arrange Tool windows in the IDE in various ways. You can make these windows automatically hide or show. You can have a group of them display in a tabbed format. You can dock them against the edges of the IDE, or have them free-floating, by selecting or clearing the Dockable option on the Window menu. You can even display these windows on a second monitor if you have a dual monitor capability. To place Tool windows on different monitors, use the Display settings in the Control Panel to set up your multiple monitor configurations. You can then drag the Tool window to the other monitor. Only tool windows in a floating mode can be moved outside of the application frame.
Tip You can move a dockable window without snapping it into place by pressing the CTRL key while dragging it within the IDE.
Features of Tool Windows
You can have multiple instances of certain Tool windows. For example, you can have more than one Web Browser window open at one time. To create new instances of windows, on the Window menu, click New Window.
Tool windows can be set to auto hide when you highlight another window. When they auto-hide, they slide to one of the sides of the IDE and only display their icon and name. You just click them or hover over their icon/label to un-hide them. Once a window is open, you can click the pushpin icon on the title bar of the window to keep it docked on the IDE.
Visual Studio .NET supports two different interface modes for document windows: Multiple Document Interface (MDI) and Tabbed Documents. You can change modes using the General pane under the Environment options in the Options dialog box. You can get to this dialog box by clicking Tools, then Options, and then General under the Environment tree. In MDI mode, the IDE provides a parent window that serves as a visual and logical container for all Tool and Document windows. Tabbed Documents mode displays all document windows maximized, and a tab strip on top shows the names of the open documents for quick navigation.
Document windows are those windows that you use for editing an item from your project. Any window that is not dockable and is unique to a specific project is a Document window. How Document windows appear in the IDE will depend on the interface mode you have set in Visual Studio .NET. You may tile windows when you are in the Tabbed Documents mode. This is accomplished by dragging a document's tab to the bottom or the right side of the IDE and a frame for tiling will show up. To cancel this tiling, you simply drag the tab back to its original location.
Using the Editor
Let's now take a look using the Editor for writing code.
When using objects such as ADO.NET objects or any data type, after typing the name of the variable and a dot (.), you will see a list of methods and/or properties that you can use with that object. When entering a method call, you can see the signature of the method with the types of its parameters and scroll through the various overloaded signatures. The technology behind this is Microsoft® IntelliSense®; it allows you to auto-complete the syntax just by hitting the space bar or the tab key once the command that you wish to use is highlighted.
Split the Editing Window
You can split the editing window by grabbing the upper right corner of the editing window and dragging it downward. You can also double-click the same area to have it split or un-split automatically. If you need a full-height split of a document window, on the Window menu, click New Window to create a second window and position it how you'd like.
You can search for text anywhere in the current procedure, the current module, or within a highlighted block of code. From any code window, to bring up the Find dialog box as shown in Figure 11, on the Edit menu, click Find and Replace, and then Find, or you can press Ctrl+F. If you select a piece of text in your code window and then open the Find window, the selected text will automatically appear in the Find what field.
Figure 11. The Find window will help you search for text in your project
Enter a piece of text in the Find what field and click Find Next to find the next location in the code that matches the string. You can keep this dialog box open and keep clicking Find Next to find subsequent occurrences of the string. You can also close the Find dialog box and press F3 to perform the Find Next over and over again.
There are other options that you can use to find a particular string in your source code. You can narrow your search to the current procedure or the current module, or you can search across all of the modules in the entire project. You can find a whole word that matches the string you input, you can perform a case-sensitive search, or you can put in wild cards such as * and ? to perform pattern matching. The wildcard characters are just like you might use to find a file in Explorer. For example if you input str*, the Find dialog searches for any word that begins with the letters str. The ? is a placeholder for a single character, so ?str finds any word that has any first letter followed by the letters str.
Many times when you are programming, you will want to change a variable from one name to another. Or perhaps you just want to change a piece of text. This can be done with the Replace window. To bring up the Replace dialog, on the Edit menu, click Find and Replace and then Replace, or press Ctrl+H from within a code window, or click the Replace command button in the Find window.
This dialog box is essentially the same as the Find window, but allows you to replace one piece of text at a time. You can also find the next occurrence of the Find what text by clicking Find Next. If you wish to replace all of the values within the scope specified, you can click Replace All.
Find in Files
The Find dialog is useful if you are searching open documents. If you need to search for items in any file in your current project, or in your whole solution, you will need to use the Find in Files dialog. This dialog will allow you to search all files regardless of whether or not they are open, across the current project, or even across the whole solution.
Replace in Files
You can perform a search and replace throughout the files in your project, or within a folder. A nice feature of the Replace in Files dialog is the "Keep Modified Files Opened on Replace All" option. If you choose to make a bulk change and press "Replace All," this option (if checked) will open each file that is modified so you can review the change and undo it if it's not what you intended.
Search for Symbols
A symbol is a definition of a variable, such as your own classes or structures. Searching for symbols is different from searching for text in that it only looks for definitions and references to those definitions of the symbols that you specify. The definitions and references are displayed in the Find Symbols Result window, which resembles a Search Results screen that you see in Windows Explorer.
Press Ctrl+I for incremental search mode. You can then press keys and drill down to the selection in your file that matches what you have typed. Incremental search interacts with the main Find tool by sharing the last find pattern. You can initiate incremental search with Ctrl+I to see the search with the last search pattern. Ctrl+Shift+I initiates a reverse incremental search, or switches a forward search to a reverse search.
Note A regular Find operation searches for text in hidden regions when the option to do so is selected, but an incremental search does not.
A bookmark allows you to mark a certain line of code and then find it quickly later.
Note Bookmarks are not saved unless your document remains open and you open the same solution (so your document reopens). If you want pointers to code that are saved, use "Task List Shortcuts." They will be saved with your solution, whether the documents are opened or not. They will also display an item in the task list for each shortcut, making navigation to those locations even easier.
This is an extremely handy tool. You can highlight a block of text and comment or uncomment it. On the Edit menu, click Advanced, then either click Comment Selection or UnComment Selection.
Highlight the text you want to move, click and hold with your mouse, and then drag the text to the new location.
To copy the text, press and hold down the CTRL key while dragging the text.
You may also drag text from your editor into the toolbox. This text will stay in the toolbox during your current session within the IDE. You can then drag this text from the toolbox to anywhere else in your source code.
Press CTRL+R and CTRL+R again to toggle word wrap in the editor. Word wrap is a feature that removes the horizontal scroll bar and ensures that all text is visible in the document window by wrapping long lines at word boundaries. No new lines are inserted into your document. Word Wrap is a visual display effect only.
Note There are many other multiple keystrokes that you can use with the Visual Studio .NET environment. You will find some under the Outlining menu, for example.
Press ALT+SHIFT+ENTER to toggle Full Screen mode.
Tabbing Between Windows
To move quickly among the various open windows in your Visual Basic session (forms, classes, modules), press Ctrl+Tab to iterate forward and Shift+Ctrl+Tab to iterate backward. This keeps your hands on the keyboard instead of having to use the mouse to select a specific window.
You can store up to 20 items in the clipboard ring at a time. If you add more, the clipboard ring will empty the first items you added to stay at a total of 20 at a time. To view the items in the clipboard ring, place your cursor somewhere in a code window and press Ctrl+Shift+V. Without releasing the Ctrl+Shift, keep hitting the V key, and you can then cycle through all of the items in the clipboard ring. When you find the one you want, you can simply release Ctrl+Shift, and that item will stay in your code window.
You may also view the clipboard ring by clicking the Clipboard Ring tab on the Toolbox. You can then view each of the items, and even drag items from the toolbox into the code editor.
If you find yourself performing the same functions over and over again within the Visual Studio .NET IDE, you can record them into a macro. This is just like recording a macro in the Microsoft® Office products. You turn on the Macro recorder, perform the steps, then save the macro—either temporarily for this editing session, or you can save it more permanently within a macro project that you can then add to any solution you work with. There is more information on using the macro recorder in the Visual Studio .NET Help.
Working with Controls
There are a lot of tools that you can employ to help you manipulate controls at design time on your Windows Forms.
Setting Tab Order
When you create a data entry form like the one shown in Figure 12, you will want to set the order in which your user tabs through the controls at run time. To enter the Tab Order View Mode (as shown in Figure 12), on the View menu, click Tab Order. You can click each control in turn to define the order in which you want your user to move through each control at run time.
Figure 12. Tab order can be set just by clicking on each control with your mouse in the order you want a user to move through the control at run time
Set the Font Property
If you set the Font property on a form prior to adding controls to the form, all of the controls you add will inherit the set font style for that form. This speeds up the process of making the fonts the same for all of your controls.
Selecting Groups of Controls
If you wish to apply attributes to many controls at once, you can do so by selecting all of the appropriate controls, and then using the Properties window to set the appropriate property. To select a group of controls, place your mouse over the form at the top left corner, and then drag the mouse until all controls are contained within the displayed outline. When you let go of the mouse button the controls will be selected. You can also use the Shift or Ctrl key in combination with the mouse click to individually select controls.
After selecting all of the controls you want, look at the properties window to see a list of properties that these controls have in common. For example, you can set the Height property or Left property for these controls to one value. You can also select these controls and press the Del key to delete the selected controls from this form.
You can select all of the controls on a form by pressing Ctrl+A.
Selecting Groups of Controls on a Container
To select a group of controls that are inside a container control, click on the form to give it focus. Next, press and hold the control key and drag the mouse to outline all controls within the container control. It is very important that you give the form focus prior to selecting all of the controls in the container. If you do not do this, no selections will take place within the container.
Many properties allow you to select from an enumerated list of values, like the Align property. You can choose these values from the dropdown list. You can also double-click the property name within the Properties window and this will cause the dropdown list to cycle through the list of values one at a time, each time you double-click. When you find the value you want, stop clicking and the property will be set to that value. If you know the value of the property, you can press the first letter of that value to change that property.
Lining up controls in a graphical environment can be a difficult process. Having the grid on the form really helps this process, but sometimes you need to line up several controls on a common grid line. Under the Format menu, you will find many menu items that can help you to align and size controls on a particular grid and to a particular control.
In general, you will use formatting menus on groups of controls. When you highlight a group of controls, one of the controls will be the primary control. This control has sizing handles of a different color from the rest. When applying any of the format options that are listed below, this primary control will be the one from which all of the other controls get sizing and formatting options.
This menu allows you to align selected objects with each other using the primary control selected as the alignment reference. Table 4 shows the different alignment options allowed.
Table 4. Alignment options in the Format menu
|Lefts||Puts the left-most edges in line with the primary control.|
|Centers||Puts the centers in line with the primary control.|
|Rights||Puts the right-most edges in line with the primary control.|
|Tops||Puts the tops in line with the primary control.|
|Middles||Puts the middles in line with the primary control.|
|Bottoms||Puts the bottoms in line with the primary control.|
|To Grid||Snaps the top left of the selected objects to the closest grid.|
Make Same Size
Using the primary control as a reference, the Make Same Size control makes the other selected objects the same size as the primary control.
Table 5. Sizing options in the Format menu
|Width||Adjusts the width of all selected controls to the width of the primary control.|
|Height||Adjusts the height of all selected controls to the height of the primary control.|
|Both||Adjusts both the width and the height of all selected controls to the width and height of the primary control.|
The options under the Horizontal Spacing menu change the horizontal spacing between selected objects.
Table 6. Horizontal spacing options under the Format menu
|Make Equal||Makes equal space between the selected objects using the outermost objects as endpoints.|
|Increase||Increases the horizontal spacing by one grid unit based on the object with focus.|
|Decrease||Decreases the horizontal spacing by one grid unit based on the object with focus.|
|Remove||Removes the horizontal space so that the objects are aligned with their edges touching, based on the object with focus.|
The options under this menu change the vertical spacing between selected objects.
Table 7. Vertical Spacing options under the Format menu
|Make Equal||Makes equal space between the selected objects using the top and bottom objects as the end points.|
|Increase||Increases the vertical spacing by one grid based on the object with focus.|
|Decrease||Decreases the vertical spacing by one grid based on the object with focus.|
|Remove||Removes the vertical spacing so that the object's borders are touching, based on the object with focus.|
Note If using the Vertical/Horizontal Spacing command does not produce the results you want, try to manually rearrange some of the objects and repeat the command.
Center in Form
The items in this menu center the selected objects on the central axes of the form.
Table 8. Centering options under the Format menu
|Horizontally||Aligns the middles of the selected objects to a horizontal line in the middle of the form.|
|Vertically||Aligns the centers of the selected objects to a vertical line in the center of the form.|
The items in this menu change the order of the selected objects on a form.
Table 9. Order options under the Format menu
|Bring To Front||Moves the selected objects to the front of all other objects on a form.|
|Send To Back||Moves the selected objects behind all other objects on a form.|
From the Format menu, you can choose the Lock Controls menu. When you select this, all of the controls on a particular form will be locked in place. Any attempts to move the controls will be unsuccessful until they are unlocked. This is very useful in order to avoid inadvertently moving the controls after you have finished precisely lining them up, and now need to click on the controls to add code.
As you have read, almost everything is different in Visual Studio .NET. The IDE is much more robust and configurable than in previous versions of Visual Basic. There are new tools that will help you accomplish certain tasks more easily than before. The environment still provides you with certain familiar features (Search and Replace) and certain familiar windows (Properties window, Command window), so that you will be able to be productive in this new environment right away.
The Visual Studio .NET IDE is a vast improvement over the older Visual Studio 6.0 environment. It is certainly more productive than Microsoft® Notepad! Take advantage of all of the features outlined in this document, and the many other features available to you within this great environment. If you do, you will be rewarded with a much more productive experience when creating your .NET applications.
About the Author
Paul D. Sheriff is the owner of PDSA, Inc., a custom software development and consulting company in Southern California. Paul is the MSDN Regional Director for Southern California, is the author of a book on Visual Basic 6.0 called Paul Sheriff Teaches Visual Basic, and has produced over 72 videos on Visual Basic, SQL Server, .NET and Web Development for Keystone Learning Systems. Paul has co-authored a book entitled ASP.NET Jumpstart. Visit the PDSA, Inc. Web site (pdsa.com) for more information.
About Informant Communications Group
Informant Communications Group, Inc. (www.informant.com) is a diversified media company focused on the information technology sector. Specializing in software development publications, conferences, catalog publishing and Web sites, ICG was founded in 1990. With offices in the United States and the United Kingdom, ICG has served as a respected media and marketing content integrator, satisfying the burgeoning appetite of IT professionals for quality technical information.
Copyright © 2002 Informant Communications Group and Microsoft Corporation
Technical editing: PDSA, Inc.