General Help	<ul><li>Particularly for beginners, the first place you should likely turn is a textbook, particularly if you are doing classwork. Assignments are typically geared to what is being taught, and normally track the material in the textbook. If you turn to the web, you will likely find both out of date solutions, and also solutions that use advanced techniques. It is often better to use the support and techniques being presented in the course rather than searching elsewhere. <li>A good secondary resource is a Internet Search. You often can find example and explanations related to coding by either doing an Internet search or by using one of the related forums.</li><li>Don't just copy and paste the code you may find. You need to understand it. If you don't, you will be out-of-luck if you need to change it.</li></ul><span class="boldtext">Visual Basic</span></li><ul><li>Always use the qualifier vb.net in your search term, followed by the issue you are researching (vb.net Splash Screen).</li><li>Avoid postings that focus on vb6, which predates vb.net. These postings are dated, and there likely is a better way of doing with in vb.net.</li><li>Read through the official Microsoft Documentation at MSDN. They often have sample code and explain limitations you should be aware of.</li></li>There are many support forums out there. Make sure to search the posting prior to posting questions. It is likely your question has been asked and answered multiple times. Follow the rules of the Forum. If you demonstrate you have made an effort, you are more likely to get help. The forum I like is <a href="http://www.vbforums.com">VBForums.com</a></li></ul></ul>
 - Splash Screen	A splash screen is the startup screen to establish some basic information about the application such as Title, Author, Version number, etc. It can be added to the application just like any other form. See Instructions and more information here: <a href="https://msdn.microsoft.com/en-us/library/bfkbc5a3(v=vs.100).aspx">How to Specify a Splash Screen for an Application</a>. You change the information contained on the Splash Screen in the Assembly Information Window(see <a href="https://msdn.microsoft.com/en-us/library/vstudio/ts8eta17%28v=vs.100%29.aspx">Specify Assembly Information</a>).
 - About Box	The About Box is special type of form which is displayed on command to provide additional information about an application. This is equivalent to the About Box found in most commercial applications. You add it just like you would add any other form, by going to Project / Add Windows Form and looking for the About Box template. You change the information contained on the AboutBox in the Assembly Information Window (see <a href="https://msdn.microsoft.com/en-us/library/vstudio/ts8eta17%28v=vs.100%29.aspx">Specify Assembly Information</a>).
Application Info	This relates to the information displayed in the Splash Screen and the AboutBox. Unlike other forms, you can not update the properties on these forms and have your settings show up when you run the application. You need to change these settings in the Assembly information Window (see <a href="https://msdn.microsoft.com/en-us/library/vstudio/ts8eta17%28v=vs.100%29.aspx">Specify Assembly Information</a>).
Debugging	Visual Studio provides a number of very useful tools to help debug your applications. Three Key ones are: Break Points, Stepping through the application, and the various Debug Windows (particularly the Watch Windows). Breakpoints allow you to stop the execution of the code, and then determine the value of your variables, and then step through the code to see how it operates. You can hover over a variable in break mode to determine its value, but a more efficient way is to use one of the Debug windows (go to Debug / Windows). The Locals and Autos, allow you to see different sets of variables which change as you move through the code. Watch Windows allow you to specify which variables you want to monitor. (see <a href="https://msdn.microsoft.com/en-us/library/bhawk8xd.aspx">Use Debugger Variable Windows</a>). 
Object/Variable Prefixes	It is a best practice to add specific prefixes to your objects and variables. <ul><li>It avoids potential issues when you use reserved words for object/variable names. This typically happens when you use real words such as Name, Address, and Print. Avoid this issue by adding prefixes(i.e., txtName, txtAddress, btnPrint). </li><li>The prefixes are not required by the language, but rather they make it easier for the programmer, and subsequent code maintainer to understand what the code is doing. Using the proper prefix tells the viewer to which object or variable type you are referring. For example your form might have a Label describing a Textbox which holds the User's name, which is then assigned to a String variable in the code. Each could logically be referred to as Name. To make it clear, name them lblName, txtName, and strName, respectively. </li><li>Using Prefixes also helps Visual Studio Help you. Visual Studio has Intellisence, which pulls up possible code completion text as you type. If you consistently use prefixes, as soon as you type txt, all the textboxes on the form will be displayed, making it easy to select the correct object. The same goes for variable naming. With consistent prefix usage, typing in int will pull up all the integer variables defined within the current scope.</li><li>This specific list of prefixes used may be organization specific. Here is a short list of suggested prefixes: <a href = "http://gcctech.org/csc/VB/VB_3letterObjectID.htm">Prefix List</a>.</li></ul>
Design Time Form Properties	All visual information on forms and the objects contained on them are controlled by their properties. You can Display the property window by going to View / Properties Window. Pin the window to keep it open. All objects have a Name property, which must be unique. Consistently using objects prefixes will make coding easier. The only exception to this is for Labels which are not used programatically (i.e., their properties such as Text are not changed in the code). Any text that is displayed is set in the object's Text Property. Some object has a smart button that appears on the top right of the object when it is selected. This provides access to comment properties. Specific properties that are important for the form are: </ul><li>Name - you ALWAYS should use a frm prefix. Hint - Either Name the form properly when creating it, or Rename it in the Solution Explorer. This will propagate the name to the properties window.</li><li>Accept && Cancel Buttons - Specifies what happens when the user hits Enter and Esc keys (the corresponding Buttons must be defined on form).</li><li>StartPosition - Location on screen that the application starts up (I prefer Center Screen)</li><li>BackColor - background color</li><li>Text - Displayed at the top of the form </li></ul> When setting the Text property, you can incorporate Hotkeys by inserting an ampersand (&&) prior to the desired Hotkey letter. Unfortunately, the underscore on this hotkey does not show up until the user hits the Alt key.
Coding Standards	Coding standards are important to make it easier to maintain the code, and provide for code reuse. Studies show 80% of the effort used to support program code is done to maintain it, so it is important to do everything we can to make that easy. Key elements are <ul><li>Comment the code</li><li>Use consistent naming conventions</li><li>Design for reuse, meaning when you write subroutines/functions, Use encapsulation techniques. The code should only communicate through passed variables, and NEVER reference objects on the form.</li></ul>
Variables	When writing a program, you have the objects on the form, which typically holds user input. This might be the users Name, Salary, Weight, Age, Number of Children, Married, and Hire date. If you are going to process this information and do something useful, a programmer will normally need to bring this information into the Program and assign the information to variables that they define. So the user name may go from the txtName.text in the textbox to a string variable defined as strName. You need to define the variables appropriately. Salary, Weight, Age, Number of Children are all typically numbers. But which of these could possible have decimal values? That would be Salary, Weight, and Age (although you might want to force age to be a whole number). These would need to be declared with a data type that supports decimal values. Number of children will never have a decimal value, so it should be declared as an Integer. Hire Date should be declared as a date variable to allow date functions to be used. Married would likely be a Boolean, but you may need to make it a String if you want to allow "I Don't Know" as a valid answer.
Data Types	All programming languages offer a broad selection of variable types. In most cases you can just use two numeric types <ul><li>Integer for numbers without decimal values</li><li>Either Decimal or Double for numbers with decimal values</li><li>Boolean for True/False variables</li><li>Date for Date/Time variables</li></ul> Normally a program will use a mix of these data types. 
Data Structures	Variables can be single variables or grouped together in an array. Here is some information about Arrays. <ul><li>Here is a reference related to working with arrays: <a href="https://msdn.microsoft.com/en-us/library/wak0wfyt.aspx">Arrays in Visual Basic</a></li><li>An Array can be one dimensional (i.e., just a one column). You could put the Months of the year in an array, with January being the first item in the array, up through December being the 12 item. WARNING, a long time ago Computer Scientists decided to start counting things starting at zero. So our array of 12 months would go from item(0) for January and item(11) for December. </li><li>So always keep this in mind - arrays start at zero and go to one less the number of items in the array.</li><li>Arrays can be multi dimensional, or have multiple columns. Think of it as a spreadsheet with lots of rows, and multiple columns. Lets say you are making a budget, with 12 rows (one for each month), and four columns (i.e., Month, Rent, Food, Utilities). The way you specify this is to define the name for the array, say Budget, and give it the dimension, so Dim Budget(11,3) as double. Looks odd doesn't it. Again remember that the counting starts at 0, so this indicates 12 rows, and 4 columns. </li><li> You can change the size of an array using a redim statement. So if I wanted to add another column it would be redim Budget(11,4). But if you do this you get a nasty surprise - it throws all the data away that is in the array. To save the data, add a Preserver attribute, such as redim Preserve Budget(11,4).</li><li> Lists are special forms of arrays that have some useful properties. </li></ul>
 - Structures	Structures are a way to build a custom data type. You define the structure to have whatever name fields you want, with whatever datatypes you want. Then you can define a variable or an array based on that structure. Say you have<br /><br /><span class="codeblock">Structure MyStudent </span><br /><span class="codeblock2"> dim strName as string<br/> <span class="codeblock2">dim dblSalary as double</span><br/> <span class="codeblock2">dim intNumberOfKids as integer</span><br/> <span class="codeblock2">dim datHireDate as date</span></br> <span class="codeblock2">dim boolMarried as boolean</span><br/><span class="codeblock">end Structure</span><br/><br/><span class="codeblock">dim Students(100) as MyStudent</span><br/><span class="codeblock">You can reference the fifth student's salary as   Students(4).dblSalary</span><br/><br/>
Name Spaces	To simplify the working environment, Visual Studio limits which commands are available when you create an application. You can expand that namespace and add it extra functionality. You do this by Importing a namespace at the very top of the application. Here are three common name spaces you often have to add. <ul><li>Imports System.IO - Adds Input and Output commands. Used any time you read and write files. </li><li>Imports System.Net - Adds commands to work over the internet. WebClient is used to download files from the web.</li><li>Imports System.DB - adds database functionality</li></ul>
 - String Formatting	When you want to output a number of date, you often want to format the number. The first step is always to convert the number to a string, and then you format the string. You can convert a number to a string in two ways: either cstr() or .tostring. It is nearly always better to use the .tostring approach, because it supports number formatting see <a href"https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx">Standard Numeric Format String</a> and <a href="https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx">Standard Date Format Strings</a>. For more complicated formatting, use the String.Format command <a href="https://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx#Format_Brief"></a>.
 - Concatenation	Concatenation is the technical term for combining two strings. The concatenation operator is an ampersand (&). So strFullName = strFirstName & " " & strLastName, where the extra " " adds a space between the two names. WARNING, most of the time a plus sign will work, but it can provide odd results, so it is best practices to always use an ampersand to concatenate.
 - Case Insensitive	When comparing two test strings, it is normally important to make the comparison case insensitive (i.e., "Yes" = "yes" = "YES"). You do this by adding either .toUpper or .toLower to both strings (.toUpper forces to upper case, .tolower forces to lower case). This is particularly important when dealing with User input or reading from a file.
 - Complex Conditions	Sometimes the triggers for an IF statement may depend on multiple factors. In this case you need to either nest the IF statements, or use an AND or OR. You could also use Nested IF Statements. And Don't forget the Else statement. It can be quite useful. Some examples here: <a href="https://msdn.microsoft.com/en-us/library/752y8abs.aspx">If...Then...Else Statement</a>
 - Form Text 	The text property for the from is displayed at the top of the Form. 
 - Accept Button	The AcceptButton Property is used to specify which button on the form is activated when the user clicks the enter key. While this can be specified in code, it is best practice to do it at design time in the Properties Window.
 - Cancel Button	The CancelButton Property is used to specify which button on the form is activated when the user clicks the Esc key. While this can be specified in code, it is best practice to do it at design time in the Properties Window.
 - Start Position - The StartPosition Property is used to specify the position of the form at start up.
 - Non-Gray Form Color	Setting the form BackColor Property modifies the form color. This check determines if the developer changed the form color from the default gray.
 - Form (frm)	It is best practice to use a frm prefix on all forms. It is easiest to modify the file name when the form is created. You also can change the name of the file in the Solution Explorer window. Note, changing the Form Name in the Properties window will often not change the filename, which can cause naming inconsistencies. 
 - Buttons (btn)	It is best practice to use a btn prefix for all buttons. 
 - Textboxes (txt)	It is best practice to use a txt prefix for all textboxes.
 - Active Labels (lbl)	It is best practice to use a lbl prefix for all labels that are utilized in the code (i.e., it is actively referenced in the code). 
 - NonActive Labels (no prefix needed)	Nonactive labels are not referenced in the code, and therefore there is no need to modify the Label Name Property. These labels are used to display static information on the form. 
 - First Line of Sub/Function	Comments are needed to describe what the code is doing - EVEN FOR CODE THAT LOOKS OBVIOUS, such as a Sub called btnExit_Click, that only has the code Me.close. Stick in a comment that says "This closes the application". Place comments at the top of Subroutines and Functions, just AFTER the declaration. Explain what it does, along with the nature of the Inputs and Outputs. Provide sufficient information to make the purpose clear to the reader. This is important to promote reuse.
 - Prior to IF	Add a comment ABOVE all IF, FOR, DO, WHILE, and SELECT CASE statements explaining what the code segment does. 
 - Prior to FOR	
 - Prior to DO	
 - Prior to WHILE	
 - Prior to SELECT CASE	
	 
 - General Comments on Comments	Comments are needed to describe what the code is doing - EVEN FOR CODE THAT LOOKS OBVIOUS, such as a Sub called btnExit_Click, that only has the code Me.close. Stick in a comment that says "This closes the application". Here are some basic guidelines on commenting: <ul><li>Place comments at the top of Subroutines and Functions, just after the declaration. Explain what it does, along with the nature of the Inputs and Outputs.</li><li>Add a comment above all IF, Select Case, For, or Do statement explaining what the code segment does. </li><li> Can add comments after variables declarations that may not be clear. </li><li>Might add a comment separator to differentiate portions of the code. </li><li> Add additional comments on complex portions of the code.</li></ul>
