VB
VB
VB
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
An integrated development environment (IDE) is a feature-rich program that supports many aspects of software
development. The Visual Studio IDE is a creative launching pad that you can use to edit, debug, and build code,
and then publish an app. Over and above the standard editor and debugger that most IDEs provide, Visual
Studio includes compilers, code completion tools, graphical designers, and many more features to enhance the
software development process.
The preceding image shows Visual Studio with an open Visual Basic project that shows key windows and their
functionality:
In Solution Explorer, at upper right, you can view, navigate, and manage your code files. Solution
Explorer can help organize your code by grouping the files into solutions and projects.
The central editor window, where you'll probably spend most of your time, displays file contents. In the
editor window, you can edit code or design a user interface such as a window with buttons and text
boxes.
In Team Explorer, at lower right, you can track work items and share code using version control technologies
such as Git and Team Foundation Version Control (TFVC).
In Git Changes at lower right, you can track work items and share code with others by using version control
technologies like Git and GitHub.
Editions
Visual Studio is available for Windows and Mac. Visual Studio for Mac has many of the same features as Visual
Studio for Windows, and is optimized for developing cross-platform and mobile apps. This article focuses on the
Windows version of Visual Studio.
There are three editions of Visual Studio: Community, Professional, and Enterprise. See Compare Visual Studio
editions to learn about which features each edition supports.
Refactoring
Refactoring includes operations such as intelligent renaming of variables, extracting one or more lines of
code into a new method, and changing the order of method parameters.
IntelliSense
IntelliSense is a set of features that display information about your code directly in the editor and, in
some cases, write small bits of code for you. It's like having basic documentation inline in the editor, so
you don't have to look up type information elsewhere.
The following illustration shows how IntelliSense displays a member list for a type:
IntelliSense features vary by language. For more information, see C# IntelliSense, Visual C++ IntelliSense,
JavaScript IntelliSense, and Visual Basic IntelliSense.
Visual Studio search
Visual Studio menus, options, and properties can seem overwhelming at times. Visual Studio search, or
Ctrl +Q , is a great way to rapidly find IDE features and code in one place.
When you start typing the name of something you're looking for, Visual Studio lists results that take you
where you need to go. If you need to add functionality, for example another programming language, you
can open the Visual Studio Installer from the search box results to install the workload or component.
Live Share
Collaboratively edit and debug with others in real time, regardless of your app type or programming
language. You can instantly and securely share your project. You can also share debugging sessions,
terminal instances, localhost web apps, voice calls, and more.
Call Hierarchy
The Call Hierarchy window shows the methods that call a selected method. This information can be
useful when you're thinking about changing or removing the method, or when you're trying to track
down a bug.
CodeLens
CodeLens helps you find code references, code changes, linked bugs, work items, code reviews, and unit
tests, without leaving the editor.
Go To Definition
The Go To Definition feature takes you directly to the location of a function or type definition.
Peek Definition
The Peek Definition window shows a method or type definition without opening a separate file.
To get started, download Visual Studio and install it on your system. In the modular installer, you choose and
install workloads, which are groups of features you need for the programming languages or platforms you
want. To use the following steps to create a program, be sure to select the .NET desktop development
workload during installation.
When you open Visual Studio for the first time, you can sign in by using your Microsoft account or your work or
school account.
1. Open Visual Studio. On the start window, select Continue without code .
2. On the Visual Studio menu bar, choose Tools > Options to open the Options dialog.
3. On the Environment > General options page, change the Color Theme selection to Blue or Light ,
and then select OK .
The color theme for the entire IDE changes accordingly. The following screenshot shows the Blue theme:
Select environment settings
You can configure Visual Studio to use environment settings tailored to Visual Basic developers.
1. On the menu bar, choose Tools > Impor t and Expor t Settings .
2. In the Impor t and Expor t Settings Wizard , select Reset all settings , and then select Next .
3. On the Save Current Settings page, select whether to save your current settings before resetting. If you
haven't customized any settings, select No, just reset settings, over writing my current settings .
Then select Next .
4. On the Choose a Default Collection of Settings page, choose Visual Basic , and then select Finish .
5. On the Reset Complete page, select Close .
To learn about other ways you can personalize the IDE, see Personalize Visual Studio.
Create a program
Dive in and create a simple program.
1. On the Visual Studio menu bar, choose File > New > Project . (Alternatively, press Ctrl +Shift +N .)
The Create a new project window opens and shows several project templates. A template contains the
basic files and settings required for a given project type.
2. To find the template we want, type or enter .net core console in the search box. The list of available
templates is automatically filtered based on the keywords you entered. You can further filter the template
results by choosing Visual Basic from the All language drop-down list, Windows from the All
platforms list, and Console from the All project types list.
Select the Console Application template, and then click Next .
3. In the Configure your new project window, enter HelloWorld in the Project name box, optionally
change the directory location for your project files (the default locale is C:\Users\<name>\source\repos ),
and then click Next .
4. In the Additional information window, verify that .NET Core 3.1 appears in the Target Framework
drop-down menu, and then click Create .
Visual Studio creates the project. It's a simple "Hello World" application that calls the Console.WriteLine()
method to display the literal string "Hello World!" in the console (program output) window.
Shortly, you should see something like the following:
The Visual Basic code for the app appears in the editor window, which takes up most of the space. Notice
that the text is automatically colorized to indicate different parts of the code, such as keywords and types.
In addition, small, vertical dashed lines in the code indicate which braces match one another, and line
numbers help you locate code later. You can choose the small, boxed minus signs to collapse or expand
blocks of code. This code outlining feature lets you hide code you don't need, helping to minimize
onscreen clutter. The project files are listed on the right side in a window called Solution Explorer .
There are other menus and tool windows available, but let's move on for now.
5. Now, start the app. You can do this by choosing Star t Without Debugging from the Debug menu on
the menu bar. You can also press Ctrl +F5 .
Visual Studio builds the app, and a console window opens with the message Hello World! . You now
have a running app!
6. To close the console window, press any key on your keyboard.
7. Let's add some additional code to the app. Add the following Visual Basic code before the line that says
Console.WriteLine("Hello World!") :
This code displays What is your name? in the console window, and then waits until the user enters
some text followed by the Enter key.
8. Change the line that says Console.WriteLine("Hello World!") to the following code:
11. Press any key to close the console window and stop the running program.
1. On the Visual Studio menu bar, choose File > New > Project . You can also press Ctrl +Shift +N .
The Create a new project window opens and shows several project templates. A template contains the
basic files and settings that a given project type requires.
2. To find a template, you can type or enter keywords in the search box. The list of available templates filters
based on the keywords you enter. You can further filter the template results by choosing Visual Basic
from the All languages dropdown list, Windows from the All platforms list, and Console from the
All project types list.
Select the Visual Basic Console Application template, and then select Next .
3. In the Configure your new project window, enter HelloWorld in the Project name box. Optionally,
change the project directory location from the default location of C:\Users\<name>\source\repos, and
then select Next .
4. In the Additional information window, verify that .NET 6.0 appears in the Target Framework drop-
down menu, and then select Create .
Visual Studio creates the project. The program is a simple "Hello World" application that calls the
Console.WriteLine() method to display the string Hello, World! in a console window.
The project files appear on the right side of the Visual Studio IDE, in a window called the Solution
Explorer . In the Solution Explorer window, select the Program.vb file. The Visual Basic code for the
app opens in the central editor window, which takes up most of the space.
The code is automatically colorized to indicate different parts, such as keywords and types. Line numbers
help you locate code.
Small, vertical dashed lines in the code indicate code structure or code blocks that go together. You can
also select the small, boxed minus or plus signs to collapse or expand blocks of code. This code outlining
feature lets you hide code you don't need to see, helping to minimize onscreen clutter.
Many other menus and tool windows are available.
5. Start the app by choosing Debug > Star t Without Debugging from the Visual Studio top menu. You
can also press Ctrl +F5 .
Visual Studio builds the app, and a console window opens with the message Hello World! . You now
have a running app!
This code displays What is your name? in the console window, and then waits until the user enters
some text.
8. Change the line that says Console.WriteLine("Hello World!") to the following line:
9. Run the app again by selecting Debug > Star t Without Debugging or pressing Ctrl +F5 .
Visual Studio rebuilds the app, and a console window opens and prompts you for your name.
10. Type your name in the console window and press Enter .
11. Press any key to close the console window and stop the running program.
A box displays the members of the DateTime class. The description of the currently selected member also
displays in a separate box.
2. Choose the member named Now , which is a property of the class. Either double-click on Now , or select
it and press Tab .
3. Below that line, enter the following lines of code:
Next, use refactoring again to make the code a little more concise.
1. Select the variable now in the line Dim now = Date.Now . A screwdriver icon appears in the margin on that
line.
2. Select the screwdriver icon to see available suggestions from Visual Studio. This case shows the Inline
temporary variable refactoring to remove a line of code without changing the overall code behavior.
1. Select the variable now in the line Dim now = Date.Now . A lightbulb icon appears in the margin on that
line.
2. Select the lightbulb icon to see available suggestions from Visual Studio. This case shows the Inline
temporary variable refactoring to remove a line of code without changing the overall code behavior.
Next steps
Explore Visual Studio further by following along with one of these introductory articles:
Learn to use the code editor
Learn about projects and solutions
See also
Discover more Visual Studio features.
Visit visualstudio.microsoft.com.
Read the Visual Studio blog.
Learn to use the code editor with Visual Basic
6/24/2022 • 10 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this 10-minute introduction to the code editor in Visual Studio, we'll add code to a file to look at some of the
ways that Visual Studio makes writing, navigating, and understanding Visual Basic code easier.
TIP
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
This article assumes you're already familiar with Visual Basic. If you aren't, we suggest you look at a tutorial such
as Create a simple Visual Basic (VB) console app first.
TIP
To follow along with this article, make sure you have the Visual Basic settings selected for Visual Studio. For information
about selecting settings for the integrated development environment (IDE), see Select environment settings.
2. We're not using the morewords array, but we may use it later so we don't want to completely delete it.
Instead, let's comment out those lines. Select the entire definition of morewords to the closing curly brace,
and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the
keyboard, press Ctrl +K , Ctrl +C .
The Visual Basic comment character ' is added to the beginning of each selected line to comment out
the code.
2. We're not using the morewords array, but we may use it later so we don't want to completely delete it.
Instead, let's comment out those lines. Select the entire definition of morewords to the closing curly brace,
and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the
keyboard, press Ctrl +K , Ctrl +C .
The Visual Basic comment character ' is added to the beginning of each selected line to comment out
the code.
The code block collapses to just the first line, followed by an ellipsis ( ... ). To expand the code block again, click
the same gray box that now has a plus sign in it, or press Ctrl +M , Ctrl +M again. This feature is called Outlining
and is especially useful when you're collapsing long methods or entire classes.
You can collapse sections of code to focus just on the parts that are of interest to you. To practice, let's collapse
the _words array to one line of code. Choose the small gray box with the minus sign inside it in the margin of
the line that says Dim _words = New String() { . Or, if you're a keyboard user, place the cursor anywhere in the
array definition and press Ctrl +M , Ctrl +M .
The code block collapses to just the first line, followed by an ellipsis ( ... ). To expand the code block again,
choose the same gray box that now has a plus sign in it, or press Ctrl +M , Ctrl +M again. This feature is called
Outlining and is especially useful when you're collapsing long methods or entire classes.
2. Close the peek definition window by choosing the small box with an "x" at the top right of the pop-up
window.
You see IntelliSense show you Quick Info about the query symbol.
2. To insert the rest of the word query by using IntelliSense's word completion functionality, press Tab .
3. Finish off the code block to look like the following code.
For Each str In query
Console.WriteLine(str)
Next
IntelliSense is an invaluable resource when you're coding. It can show you information about available members
of a type, or parameter details for different overloads of a method. You can also use IntelliSense to complete a
word after you type enough characters to disambiguate it. Let's add a line of code to print out the ordered
strings to the console window, which is the standard place for output from the program to go.
1. Below the query variable, start typing the following code:
You see IntelliSense show you Quick Info about the query symbol.
2. To insert the rest of the word query by using IntelliSense's word completion functionality, press Tab .
3. Finish off the code block to look like the following code.
Refactor a name
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable
or method. Let's try out Visual Studio's refactor functionality to rename the _words variable to words .
1. Place your cursor over the definition of the _words variable and choose Rename from the right-click or
context menu.
A pop-up Rename dialog box appears at the top right of the editor.
2. With the variable _words still selected, type in the desired name of words . Notice that the reference to
words in the query is also automatically renamed. Before you press Enter or click Apply , select the
Include comments checkbox in the Rename pop-up box.
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable
or method. Let's try out Visual Studio's refactor functionality to rename the _words variable to words .
1. Place your cursor over the definition of the _words variable and choose Rename from the right-click or
context menu.
A pop-up Rename dialog box appears at the top right of the editor.
2. With the variable _words still selected, type in the desired name of words . Notice that the reference to
words in the query is also automatically renamed. Before you press Enter or Apply , select the Include
comments checkbox in the Rename pop-up box.
Next steps
Learn about projects and solutions
See also
Code snippets
Navigate code
Outlining
Go To Definition and Peek Definition
Refactoring
Use IntelliSense
Learn about projects and solutions using Visual
Basic
6/24/2022 • 10 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this introductory article, we'll explore what it means to create a solution and a project in Visual Studio. A
solution is a container that's used to organize one or more related code projects, for example a class library
project and a corresponding test project. We'll look at the properties of a project and some of the files it can
contain. We'll also create a reference from one project to another.
TIP
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
We'll construct a solution and project from scratch as an educational exercise to understand the concept of a
project. In your general use of Visual Studio, you'll likely use some of the various project templates that Visual
Studio offers when you create a new project.
NOTE
Solutions and projects aren't required to develop apps in Visual Studio. You can also just open a folder that contains code
and start coding, building, and debugging. For example, if you clone a GitHub repo, it might not contain Visual Studio
projects and solutions. For more information, see Develop code in Visual Studio without projects or solutions.
NOTE
If you don't see the Empty Project (.NET Framework) template, you need to install the .NET desktop
development Visual Studio workload. Visual Studio uses workload-based installation to only install the
components you need for the type of development you do. An easy way to install a new workload when you're
creating a new project is to choose the Install more tools and features link under the text that says Not
finding what you're looking for? . After Visual Studio Installer launches, choose the .NET desktop
development workload and then the Modify button.
1. From the right-click or context menu of Solution 'QuickSolution' in Solution Explorer , choose Add >
New Project .
A dialog box opens that says Add a new project .
2. Enter the text empty into the search box at the top, and then select Visual Basic in the All languages
drop-down list.
3. Select the Empty Project (.NET Framework) template, and then choose Next .
4. Name the project QuickDate , then choose Create .
A project named QuickDate appears beneath the solution in Solution Explorer . Currently it contains a
single file called App.config.
NOTE
If you don't see the Empty Project (.NET Framework) template, you need to install the .NET desktop
development Visual Studio workload. Visual Studio uses workload-based installation to only install the
components you need for the type of development you do. An easy way to install a new workload when you're
creating a new project is to choose the Install more tools and features link under the text that says Not
finding what you're looking for? . After Visual Studio Installer launches, choose the .NET desktop
development workload and then the Modify button.
The Calendar class contains a single function, GetCurrentDate , that returns the current date.
4. Open the project properties by double-clicking My Project in Solution Explorer . On the Application
tab, change Application type to Class Librar y . This step is necessary to build the project successfully.
5. Build the project by right-clicking on QuickDate in Solution Explorer and choosing Build . You should
see a successful build message in the Output window.
End Class
You'll see a red squiggle under some of the code. We'll fix this error by making the test project a friend
assembly to the QuickDate project.
2. Back in the QuickDate project, open the Calendar.vb file if it's not already open, and add the following
Imports statement and InternalsVisibleToAttribute attribute, to resolve the error in the test project.
Imports System.Runtime.CompilerServices
<Assembly: InternalsVisibleTo("QuickTest")>
1. Now we'll add test code to the Visual Basic code file. Replace the contents of UnitTest1.vb with the
following code.
End Class
You'll see a red squiggle under some of the code. We'll fix this error by making the test project a friend
assembly to the QuickDate project.
2. Back in the QuickDate project, open the Calendar.vb file if it's not already open, and add the following
Imports statement and InternalsVisibleToAttribute attribute, to resolve the error in the test project.
Imports System.Runtime.CompilerServices
<Assembly: InternalsVisibleTo("QuickTest")>
Project properties
The line in the Calendar.vb file that contains the InternalsVisibleToAttribute attribute references the assembly
name (file name) of the QuickTest project. The assembly name might not always be the same as the project
name. To find the assembly name of a project, open the project properties.
1. In Solution Explorer , select the QuickTest project. From the right-click or context menu, select
Proper ties , or just press Alt +Enter . (You can also double-click My Project in Solution Explorer .)
The property pages for the project open on the Application tab. The property pages contain various
settings for the project. Notice that the assembly name of the QuickTest project is indeed "QuickTest". If
you wanted to change the assembly name, this is where you'd do that. Then, when you build the test
project, the name of the resulting binary file would change from QuickTest.dll to whatever you chose.
2. Explore some of the other tabs of the project's property pages, such as Compile and Settings . These
tabs are different for different types of projects.
The line in the Calendar.vb file that contains the InternalsVisibleToAttribute attribute, references the assembly
name (file name) of the QuickTest project. The assembly name might not always be the same as the project
name. To find the assembly name of a project, open the project properties.
1. In Solution Explorer , select the QuickTest project. From the right-click or context menu, select
Proper ties , or just press Alt +Enter . (You can also double-click My Project in Solution Explorer .)
The property pages for the project open on the Application tab. The property pages contain various
settings for the project. Notice that the assembly name of the QuickTest project is indeed "QuickTest". If
you wanted to change the assembly name, this is where you'd do that. Then, when you build the test
project, the name of the resulting binary file would change from QuickTest.dll to whatever you chose.
2. Explore some of the other tabs of the project's property pages, such as Compile and Settings . These
tabs are different for different types of projects.
TIP
If Test Explorer doesn't open automatically, open it by choosing Test > Windows > Test Explorer from the menu bar.
If you want to check that your unit test is working, choose Test > Run All Tests from the menu bar. A window
called Test Explorer opens, and you should see that the TestGetCurrentDate test passes.
TIP
If Test Explorer doesn't open automatically, open it by choosing Test > Windows > Test Explorer from the menu bar.
Next steps
If you want to further explore Visual Studio, consider creating an app by following one of the Visual Basic
tutorials.
See also
Create projects and solutions
Manage project and solution properties
Manage references in a project
Develop code in Visual Studio without projects or solutions
Visual Studio IDE overview
Features of Visual Studio
6/24/2022 • 6 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
This article describes features for experienced developers, or developers who are already familiar with Visual
Studio. For a basic introduction to Visual Studio, see the Visual Studio IDE overview.
Modular installation
In Visual Studio's modular installer, you choose and install the workloads you want. Workloads are groups of
features that programming languages or platforms need to work. This modular strategy helps keep the Visual
Studio installation footprint smaller, so it installs and updates faster.
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
To learn more about setting up Visual Studio on your system, see Install Visual Studio.
In Visual Studio, use Cloud Explorer to view and manage your Azure-based cloud resources. Cloud resources
might include virtual machines (VMs), tables, and SQL databases. Cloud Explorer shows the Azure resources in
all the accounts under the Azure subscription you're signed into. If an operation requires the Azure portal,
Cloud Explorer has links to the place in the portal you need to go.
IMPORTANT
The Cloud Explorer window is retired in Visual Studio 2022. For more information, see Manage the resources associated
with your Azure accounts in Visual Studio Cloud Explorer.
Use the Azure portal to access Azure resources as necessary. You can continue to use the Azure node of Server Explorer in
previous versions of Visual Studio.
You can use Azure services for your apps by adding Connected Ser vices , such as:
Active Directory connected service, to use Azure Active Directory (Azure AD) accounts to connect to web
apps
Azure Storage connected service for blob storage, queues, and tables
Key Vault connected service to manage secrets for web apps
The available Connected Ser vices depend on your project type. Add a service by right-clicking the project in
Solution Explorer and choosing Add > Connected Ser vice .
On the Connected Ser vices screen, select the link or the plus sign to Add a ser vice dependency . On the
Add dependency screen, select the service you want to add, and follow the screens to connect to your Azure
subscription and service.
For more information, see Move to the cloud With Visual Studio and Azure.
Connect to databases
Ser ver Explorer helps you browse and manage server instances and assets locally, remotely, and on Azure,
Microsoft 365, Salesforce.com, and websites. To open Ser ver Explorer , choose View > Ser ver Explorer . For
more information on using Server Explorer, see Add new connections.
SQL Ser ver Object Explorer provides a view of your database objects, similar to SQL Server Management
Studio. With SQL Server Object Explorer, you can do light-duty database administration and design work.
Examples include editing table data, comparing schemas, and executing queries by using contextual menus.
To open SQL Ser ver Object Explorer , select its icon at the top of the Ser ver Explorer window, or select
View > SQL Ser ver Object Explorer from the Visual Studio top menu.
SQL Server Data Tools (SSDT) is a powerful development environment for SQL Server, Azure SQL Database, and
Azure SQL Data Warehouse. With SSDT, you can build, debug, maintain, and refactor databases. You can work
with a database project, or directly with a connected database instance on- or off-premises. To get SSDT, use the
Visual Studio Installer to install the Data storage and processing workload.
TIP
We continue to build out the Git feature set and iterate on it based on your feedback. For more info about a recent
feature update along with a link to survey where you can share your feedback on it, see the Multi-repo support in Visual
Studio blog post.
How you open a project from a GitHub repo by using Visual Studio 2019 depends on which version you have.
Specifically, if you've installed version version 16.8 or later, there's a new, more fully integrated Git experience
in Visual Studio available to you. For more information, see the Visual Studio version control documentation
page.
And, for a step-by-step tutorial on how to connect to a Git or Azure DevOps repository by using Visual Studio,
see the Open a project from a repo page.
Next steps
If Visual Studio doesn't have the exact functionality you need, you can add it. Personalize the IDE based on
your workflow and style, add support for external tools that aren't integrated with Visual Studio, and
modify existing functionality to increase your productivity. For the latest version of the Visual Studio
Extensibility Tools (VS SDK), see Visual Studio SDK.
You can use the .NET Compiler Platform Roslyn to write your own code analyzers and code generators.
Find everything you need at Roslyn.
Find existing extensions for Visual Studio created by Microsoft developers and the Visual Studio
development community.
To learn more about extending Visual Studio, see Extend Visual Studio IDE.
See also
Visual Studio IDE overview
What's new in Visual Studio 2017
What's new in Visual Studio 2019
What's new in Visual Studio 2022
Tutorial: Create a simple Visual Basic (VB) console
app
6/24/2022 • 9 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
This article shows how you'll use Visual Studio to create a simple Visual Basic application, a console app. In this
app, you ask the user for their name, and then display it back with the current time. You'll also explore some
features of the Visual Studio integrated development environment (IDE), including source control in Git. Visual
Basic is a type-safe programming language that's designed to be easy to learn. A console app takes input and
displays output in a command-line window, also known as a console.
In this tutorial, you learn how to:
Create a Visual Studio project
Run the default application
Add code to ask for user input
Extra credit: Add two numbers
Add Git source control
Clean up resources
Prerequisites
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
Create a project
First, you'll create a Visual Basic app project. The default project template includes all the files you'll need for a
runnable app.
NOTE
Some of the screenshots in this tutorial use the dark theme. If you aren't using the dark theme but would like to, see the
Personalize the Visual Studio IDE and Editor page to learn how.
Then, in the Visual Studio Installer, choose the .NET Core cross-platform development workload.
After that, choose the Modify button in the Visual Studio Installer. You might be prompted to save your work.
Next, choose Continue to install the workload. Then, return to step 2 in this Create a project procedure.
4. In the Configure your new project window, enter WhatIsYourName in the Project name box. Then,
choose Next .
5. In the Additional information window, .NET 5.0 (Current) should already be selected for your target
framework. If not, select .NET 5.0 (Current) . Then, choose Create .
Visual Studio opens your new project.
1. Open Visual Studio.
2. On the start window, choose Create a new project .
3. In the Create a new project window, choose Visual Basic from the Language list. Next, choose
Windows from the Platform list and Console from the Project types list.
After you apply these language, platform, and project type filters, choose the Console App template, and
then choose Next .
NOTE
If you do not see the Console App template, you can install it from the Create a new project window. In the
Not finding what you're looking for? message, choose the Install more tools and features link.
Then, in the Visual Studio Installer, choose the .NET desktop development workload.
After that, choose the Modify button in the Visual Studio Installer. You might be prompted to save your work.
Next, choose Continue to install the workload. Then, return to step 2 in this Create a project procedure.
4. In the Configure your new project window, enter WhatIsYourName in the Project name box. Then,
choose Next .
5. In the Additional information window, .NET 6.0 (Long-term suppor t) should already be selected
for your target framework. If not, select .NET 6.0 (Long-term suppor t) . Then, choose Create .
1. Select the WhatIsYourName button or press F5 to run the default code in Debug mode.
2. When the app runs in the Microsoft Visual Studio Debug Console, "Hello World!" displays. Press any key
to close the debug console window and end the app:
1. Select the WhatIsYourName button or press F5 to run the default code in Debug mode.
2. When the app runs in the Microsoft Visual Studio Debug Console, "Hello World!" displays. Press any key
to close the debug console window and end the app:
Run the app as a standalone
To see the output outside of Visual Studio, in a system console window, build and run the executable (.exe file).
1. In the Build menu, choose Build Solution .
2. In Solution Explorer , right-click on WhatIsYourName and choose Open File in File Explorer .
3. In File Explorer , navigate to the bin\Debug\net5.0 directory and run WhatIsYourName.exe .
4. The Main procedure terminates after its single statement executes and the console window closes
immediately. To keep the console visible until the user presses a key, see the next section.
1. In the Build menu, choose Build Solution .
2. In Solution Explorer , right-click on WhatIsYourName and choose Open File in File Explorer .
3. In File Explorer , navigate to the bin\Debug\core6.0 directory and run WhatIsYourName.exe .
4. The Main procedure terminates after its single statement executes and the console window closes
immediately. To keep the console visible until the user presses a key, see the next section.
2. Select the WhatIsYourName button or press F5 to build and run your first app in Debug mode.
3. When the debug console window opens, enter your name. Your console window should look similar to
the following screenshot:
4. Press any key to end the app, and then press any key to close the debug console window.
1. Enter the following Visual Basic code after the Sub Main(args As String()) line and before the End Sub
line, replacing the WriteLine line:
2. Select the WhatIsYourName button or press F5 to build and run your first app in Debug mode.
3. When the debug console window opens, enter your name. Your console window should look similar to
the following screenshot:
4. Press any key to end the app, and then press any key to close the debug console window.
Now that your new code is in the app, build and run the executable (.exe file) in a system console window, as
described previously in Run the app as a standalone. Now when you press a key, the app exits, which closes the
console window.
Extra credit: Add two numbers
This example shows how to read in numbers, rather than a string, and do some arithmetic. Try changing your
code from:
Module Program
Sub Main(args As String())
Console.Write("Please enter your name: ")
Dim name = Console.ReadLine()
Dim currentDate = DateTime.Now
Console.WriteLine($"Hello, {name}, on {currentDate:d} at {currentDate:t}")
Console.Write("Press any key to continue...")
Console.ReadKey(True)
End Sub
End Module
to:
Module Program
Public num1 As Integer
Public num2 As Integer
Public answer As Integer
Sub Main(args As String())
Console.Write("Type a number and press Enter")
num1 = Console.ReadLine()
Console.Write("Type another number to add to it and press Enter")
num2 = Console.ReadLine()
answer = num1 + num2
Console.WriteLine("The answer is " & answer)
Console.Write("Press any key to continue...")
Console.ReadKey(True)
End Sub
End Module
And then run the updated app as described under "Run the app".
TIP
Git is the most widely used modern version control system, so whether you're a professional developer or you're learning
how to code, Git can be very useful. If you're new to Git, the https://git-scm.com/ website is a good place to start. There,
you can find cheat sheets, a popular online book, and Git Basics videos.
To associate your code with Git, start by creating a new Git repository where your code is located:
1. In the status bar at the bottom-right corner of Visual Studio, select Add to Source Control , and then
select Git .
TIP
Whether your repository is public or private, it's best to have a remote backup of your code stored securely on
GitHub. Even if you aren't working with a team, a remote repository makes your code available to you from any
computer.
The first icon with the arrows shows how many outgoing/incoming commits are in your current branch.
You can use this icon to pull any incoming commits or push any outgoing commits. You can also choose
to view these commits first. To do so, select the icon, and then select View Outgoing/Incoming .
The second icon with the pencil shows the number of uncommitted changes to your code. You can select
this icon to view those changes in the Git Changes window.
To learn more about how to use Git with your app, see the Visual Studio version control documentation.
Clean up resources
If you're not going to continue to use this app, delete the project.
1. In Solution Explorer , right-click on WhatIsYourName to open the context menu for your project. Then,
select Open Folder in File Explorer .
2. Close Visual Studio.
3. In the File Explorer dialog, go up two levels of folders.
4. Right-click on the WhatIsYourName folder and select Delete .
Next steps
Congratulations on completing this tutorial! To learn more, see the following tutorial.
Build a library with Visual Basic and the .NET Core SDK in Visual Studio
See also
Visual Basic language walkthroughs
Visual Basic language reference
IntelliSense for Visual Basic code files
Tutorial: Create a WPF application with Visual Basic
6/24/2022 • 6 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this tutorial, you'll create an application using Visual Basic in the Visual Studio integrated development
environment (IDE). Your program will use the Windows Presentation Foundation (WPF) UI framework. Use this
tutorial to become familiar with many of the tools, dialog boxes, and designers that you can use in Visual Studio.
In this tutorial, you learn how to:
Create the project
Configure window and add text
Add buttons and code
Debug and test the application
Debug with breakpoints
Build a release version
Prerequisites
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
The WPF Designer shows a design view and a XAML view of MainWindow.xaml in a split view.
1. Open Visual Studio.
2. On the start window, choose Create a new project .
3. On the Create a new project window, search for "WPF" and select Visual Basic in the All languages
drop-down list. Choose WPF App (.NET Framework) , and then choose Next .
NOTE
For more information about eXtensible Application Markup Language (XAML), see XAML overview for WPF.
5. Select the TextBlock item and drag it to the window on the design surface. You can move the TextBlock
control by dragging it. Use the guidelines to place the control.
The XAML markup should look like the following example:
6. In the XAML view, locate the markup for the TextBlock and change the Text attribute:
2. Add two RadioButton controls to the design surface by selecting the RadioButton item and dragging it
to the design surface. Move the buttons by selecting them and using the arrow keys. Place the buttons
side by side under the TextBlock control.
3. In the Proper ties window for the left RadioButton control, change the Name property at the top of the
Proper ties window to HelloButton.
4. In the Proper ties window for the right RadioButton control, change the Name property to
GoodbyeButton.
5. Update the Content attribute for HelloButton and GoodbyeButton to "Hello" and "Goodbye" in the
XAML.
<Grid>
<TextBlock HorizontalAlignment="Left" Margin="252,47,0,0" TextWrapping="Wrap" Text="Select a
message option and then choose the Display button." VerticalAlignment="Top"/>
<RadioButton x:Name="HelloButton" Content="Hello" HorizontalAlignment="Left"
Margin="297,161,0,0" VerticalAlignment="Top"/>
<RadioButton x:Name="GoodbyeButton" Content="Goodbye" HorizontalAlignment="Left"
Margin="488,161,0,0" VerticalAlignment="Top"/>
</Grid>
6. In the XAML view, locate the markup for HelloButton and add an IsChecked attribute:
IsChecked="True"
The IsChecked attribute with the value True means that HelloButton is checked by default. This setting
means that the radio button is always selected, even when the program starts.
7. In the Toolbox , find the Button control, and then drag a button to the design surface under the
RadioButton controls.
8. In the XAML view, change the value of Content for the Button control from Content="Button" to
Content="Display" .
End Sub
6. Start the debugger again (press F5 ). You should now see the Greetings window of your application.
7. Select Hello and the Display button, and then Goodbye and the Display button. Use the close icon in
the upper right corner to stop debugging.
For more information, see Build a WPF application (WPF) and Debug WPF.
Next steps
Advance to the next article to learn how to create a Windows Forms app in Visual Studio with Visual Basic.
Create a Windows Forms app
See also
For more information about Visual Studio, see these resources:
What's new in Visual Studio 2019
Productivity tips
What's new in Visual Studio 2022
Productivity tips
Tutorial: Create a WinForms app with Visual Basic
6/24/2022 • 4 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this tutorial, you'll create a Visual Basic application that has a Windows Forms user interface. The Visual Studio
integrated development environment (IDE) includes all the tools you need to create a Windows Forms app.
In this tutorial, you learn how to:
Create a project
Add a button to the form
Add a label and code
Run the application
Prerequisites
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
Create a project
Create a Visual Basic application project. The project type comes with all the template files you'll need, before
you've even added anything.
1. Open Visual Studio.
2. On the start window, choose Create a new project .
3. On the Create a new project window, select the Windows Forms App (.NET Framework) template
for Visual Basic.
You can refine your search to quickly get to the template you want. For example, enter Windows Forms
App in the search box. Next, select Visual Basic from the Language list, and then Windows from the
Platform list.
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, choose the Install more tools
and features link.
Next, in the Visual Studio Installer, choose the .NET desktop development workload.
After that, select Modify in the Visual Studio Installer. You might be prompted to save your work.
4. In the Configure your new project window, enter HelloWorld as the Project name . Then, select
Create .
Visual Studio opens your new project.
1. Open Visual Studio.
2. On the start window, choose Create a new project .
3. On the Create a new project window, select the Windows Forms App (.NET Framework) template
for Visual Basic.
You can refine your search to quickly get to the template you want. For example, enter Windows Forms
App in the search box. Next, select Visual Basic from the Language list, and then Windows from the
Platform list.
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, choose the Install more tools
and features link.
Next, in the Visual Studio Installer, choose the .NET desktop development workload.
After that, select Modify in the Visual Studio Installer. You might be prompted to save your work.
4. In the Configure your new project window, enter HelloWorld as the Project name . Then, select
Create .
Visual Studio opens your new project.
If you want, select the Pin icon to dock the Toolbox window.
2. Select the Button control and then drag it onto the form.
3. In the Appearance section of the Proper ties window, for Text , type Click this, and then press Enter .
If you don't see the Proper ties window, you can open it from the menu bar. Select View > Proper ties
Window or press F4 .
4. In the Design section of the Proper ties window, change the name from Button1 to btnClickThis, and
then press Enter .
NOTE
If you've alphabetized the list in the Proper ties window, Button1 appears in the (DataBindings) section,
instead.
Next steps
To learn more about Windows Forms, continue with the following tutorial:
Tutorial: Create a picture viewer
See also
More Visual Basic tutorials
C# tutorials
C++ tutorials
Tutorial: Create a picture viewer Windows Forms
app in Visual Studio
6/24/2022 • 6 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of three tutorials, you'll create a Windows Forms application that loads a picture and displays it. The
Visual Studio Integrated Design Environment (IDE) provides the tools you need to create the app. To learn more,
see Welcome to the Visual Studio IDE.
In this first tutorial, you learn how to:
Create a Visual Studio project that uses Windows Forms
Add a layout element
Run your application
Prerequisites
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
3. On the Create a new project window, search for Windows Forms. Then select Desktop from the
Project type list.
4. Select the Windows Forms App (.NET Framework) template for either C# or Visual Basic, and then
select Next .
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, select the Install more tools
and features link.
Select Modify in the Visual Studio Installer. You might be prompted to save your work. Next, select Continue to
install the workload.
5. In the Configure your new project window, name your project PictureViewer, then select Create .
1. Open Visual Studio.
2. On the start window, select Create a new project .
3. On the Create a new project window, search for Windows Forms. Then select Desktop from the
Project type list.
4. Select the Windows Forms App (.NET Framework) template for either C# or Visual Basic, and then
select Next .
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, select the Install more tools
and features link.
Select Modify in the Visual Studio Installer. You might be prompted to save your work. Next, select Continue to
install the workload.
5. In the Configure your new project window, name your project PictureViewer, then select Create .
Visual Studio creates a solution for your app. A solution is a container for all of the projects and files needed by
your app.
At this point, Visual Studio displays an empty form in the Windows Form Designer .
NOTE
You can display properties by category or alphabetically. Use the buttons on the Proper ties window to switch
back and forth.
5. Select the form, again. Select the form's lower-right drag handle. The handle is a small white square in the
lower-right corner of the form.
Drag the handle to resize the form so the form is wider and a bit taller. If you look at the Proper ties
window, the Size property has changed. You can also change the size of the form by changing the Size
property.
6. On the left side of the Visual Studio IDE, select the Toolbox tab. If you don't see it, select View > Toolbox
from the menu bar or Ctrl +Alt +X .
7. Select the small triangle symbol next to Containers to open the group.
8. Double-click TableLayoutPanel in the Toolbox . You can also drag a control from the toolbox onto the
form. The TableLayoutPanel control appears in your form.
NOTE
After you add your TableLayoutPanel, if a window appears inside your form with the title TableLayoutPanel
Tasks , click anywhere inside the form to close it.
9. Select the TableLayoutPanel . You can verify what control is selected by looking at the Proper ties
window.
10. With the TableLayoutPanel selected, find the Dock property, which has the value None . Select the
dropdown arrow and then select Fill , which is the large button in the middle of the dropdown menu.
12. Select Edit Rows and Columns to display the Column and Row Styles dialog box.
13. Select Column1 and set its size to 15 percent. Be sure the Percent button is selected.
14. Select Column2 and set it to 85 percent.
15. From Show at the top of the Column and Row Styles dialog box, select Rows . Set Row1 to 90 percent
and Row2 to 10 percent. Select OK to save your changes.
Your TableLayoutPanel now has a large top row, a small bottom row, a small left column, and a large right
column.
NOTE
Before you run your application, save your app by choosing the Save All toolbar button. Alternatively, to save your app,
choose File > Save All from the menu bar, or press Ctrl+Shift +S. It's a best practice to save early and often.
Look at the Visual Studio IDE toolbar. More buttons appear on the toolbar when you run an application.
These buttons let you do things like stop and start your app, and help you track down any errors.
Next steps
Advance to the next tutorial to learn how to add controls to your Picture Viewer program.
Tutorial part 2: Add controls to your Picture Viewer
Tutorial: Add UI controls to the picture viewer
Windows Forms app in Visual Studio
6/24/2022 • 5 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of three tutorials, you'll create a Windows Forms application that loads a picture and displays it. The
Visual Studio Integrated Design Environment (IDE) provides the tools you need to create the app. To learn more,
see Welcome to the Visual Studio IDE.
This program has a picture box, a checkbox, and several buttons, which you use to control the application. This
tutorial shows you how to add these controls.
In this second tutorial, you learn how to:
Add controls to your application
Add buttons in a layout panel
Change control names and locations
Add dialog components
Prerequisites
This tutorial builds on the previous tutorial, Create a picture viewer application. If you haven't done that tutorial,
go through that one first.
Next steps
Advance to the next tutorial to learn how to add code to your application.
Tutorial part 3: Add code to your Picture Viewer
Tutorial: Add code to the picture viewer Windows
Forms app in Visual Studio
6/24/2022 • 7 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of three tutorials, you'll create a Windows Forms application that loads a picture and displays it. The
Visual Studio Integrated Design Environment (IDE) provides the tools you need to create the app. To learn more,
see Welcome to the Visual Studio IDE.
Controls use C# or Visual Basic code to take the actions associated with them.
In this third tutorial, you learn how to:
Add event handlers for your controls
Write code to open a dialog box
Write code for the other controls
Run your application
Prerequisites
This tutorial builds on the previous tutorials, Create a picture viewer application and Add UI controls to the
picture viewer. If you haven't done those tutorials, go through them first.
IMPORTANT
Use the programming language control at the top right of this page to view either the C# code snippet or the
Visual Basic code snippet.
4. Choose the Windows Forms Designer tab again, and then double-click the Clear the picture button
to open its code. Repeat for the remaining two buttons. Each time, the Visual Studio IDE adds a new
method to the form's code file.
5. Double-click the CheckBox control in Windows Forms Designer to add a checkBox1_CheckedChanged()
method. When you select or clear the check box, it calls this method.
The following snippet shows the new code that you see in the code editor.
C#
VB
Methods, including event handlers, can have any name that you want. When you add an event handler with the
IDE, it creates a name based on the control's name and the event being handled.
For example, the Click event for a button named showButton is called showButton_Click() or
ShowButton_Click() . If you want to change a code variable name, right-click the variable in the code and then
choose Refactor > Rename . All instances of that variable in the code are renamed. For more information, see
Rename refactoring.
3. The IntelliSense window should highlight the word if . Select the Tab key to insert if .
4. Select true and then type op to overwrite it for C# or Op for Visual Basic.
8. For C#, add a space, and then add two equal signs ( == ). For Visual Basic, add a space, and then use a
single equal sign ( = ).
9. Add another space. Use IntelliSense to enter DialogResult.
10. Type a dot to open the DialogResult value in the IntelliSense window. Enter the letter O and choose the
Tab key to insert OK .
NOTE
The first line of code should be complete. For C#, it should be similar to the following.
if (openFileDialog1.ShowDialog() == DialogResult.OK)
C#
VB
pictureBox1.Load(openFileDialog1.FileName);
You can copy and paste or use IntelliSense to add it. Your final showButton_Click() method should look
similar to the following code.
C#
VB
private void showButton_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Load(openFileDialog1.FileName);
}
}
It's the best practice to always comment your code. Code comments make it easier to understand and maintain
your code in the future.
C#
VB
2. Double-click the Set the background color button and add the code in braces.
C#
VB
private void backgroundButton_Click(object sender, EventArgs e)
{
// Show the color dialog box. If the user clicks OK, change the
// PictureBox control's background to the color the user chose.
if (colorDialog1.ShowDialog() == DialogResult.OK)
pictureBox1.BackColor = colorDialog1.Color;
}
C#
VB
C#
VB
Next steps
Congratulations! You've completed this series of tutorials. You've done these programming and design tasks in
the Visual Studio IDE:
Created a Visual Studio project that uses Windows Forms
Done layout for the picture viewing application
Added buttons and a checkbox
Added dialog boxes
Added event handlers for your controls
Written C# or Visual Basic code to handle the events
Continue learning with another tutorial series on how to create a timed math quiz.
Tutorial 2: Create a timed math quiz
Tutorial: Create a math quiz WinForms app
6/24/2022 • 8 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you'll build a math quiz. The quiz contains four random math problems that a quiz
taker tries to answer within a specified time.
The Visual Studio integrated development environment (IDE) provides the tools that you need to create the app.
To learn more about this IDE, see Welcome to the Visual Studio IDE.
In this first tutorial, you learn how to:
Create a Visual Studio project that uses Windows Forms.
Add labels, a button, and other controls to a form.
Set properties for the controls.
Save and run your project.
Prerequisites
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
3. In the Create a new project window, search for Windows Forms . Then select Desktop from the
Project type list.
4. Select the Windows Forms App (.NET Framework) template for either C# or Visual Basic, and then
select Next .
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, select Install more tools and
features .
Select Modify in Visual Studio Installer. You might be prompted to save your work. Next, select Continue to
install the workload.
5. In the Configure your new project window, name your project MathQuiz , and then select Create .
1. Open Visual Studio.
2. On the start window, select Create a new project .
3. In the Create a new project window, search for Windows Forms . Then select Desktop from the
Project type list.
4. Select the Windows Forms App (.NET Framework) template for either C# or Visual Basic, and then
select Next .
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, select Install more tools and
features .
Select Modify in Visual Studio Installer. You might be prompted to save your work. Next, select Continue to
install the workload.
5. In the Configure your new project window, name your project MathQuiz , and then select Create .
Visual Studio creates a solution for your app. A solution is a container for all the projects and files that your app
needs.
NOTE
You can display properties by category or alphabetically. Use the buttons on the Proper ties window to switch
back and forth.
5. Change the size of the form to 500 pixels wide by 400 pixels tall.
You can resize the form by dragging its edges or drag handle until the correct size appears as the Size
value in the Proper ties window. The drag handle is a small white square in the lower-right corner of the
form. You can also resize the form by changing the values of the Size property.
6. Change the value of the FormBorderStyle property to Fixed3D , and set the MaximizeBox property to
False .
These values prevent quiz takers from resizing the form.
Create the time remaining box
The math quiz contains a box in the upper-right corner. That box shows the number of seconds that remain in
the quiz. This section shows you how to use a label for that box. You'll add code for the countdown timer in a
later tutorial in this series.
1. On the left side of the Visual Studio IDE, select the Toolbox tab. If you don't see the toolbox, select View
> Toolbox from the menu bar or Ctrl +Alt +X .
2. Select the Label control in the Toolbox , and then drag it onto the form.
3. In the Proper ties box, set the following properties for the label:
Set the (Name) to timeLabel .
Change AutoSize to False so that you can resize the box.
Change the BorderStyle to FixedSingle to draw a line around the box.
Set the Size to 200, 30 .
Select the Text property, and then select the Backspace key to clear the Text value.
Select the plus sign (+ ) next to the Font property, and then set the Size to 15.75 .
4. Move the label to the upper-right corner of the form. When blue spacer lines appear, use them to position
the control on the form.
5. Add another Label control from the Toolbox , and then set its font size to 15.75 .
6. Set this label's Text property to Time Left .
7. Move the label so that it lines up to the left of the timeLabel label.
Next steps
Advance to the next tutorial to add random math problems and an event handler to your math quiz.
Tutorial part 2: Add math problems to a math quiz WinForms app
Tutorial: Add math problems to a math quiz
WinForms app
6/24/2022 • 9 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you'll build a math quiz. The quiz contains four random math problems that a quiz
taker tries to answer within a specified time.
Controls use C# or Visual Basic code. In this second tutorial, you make the quiz challenging by adding code for
math problems that are based on random numbers. You also create a method that's named StartTheQuiz() to
fill in the problems.
In this second tutorial, you learn how to:
Write code to create Random objects to use in math problems.
Add an event handler for the start button.
Write code to start the quiz.
Prerequisites
This tutorial builds on a previous tutorial, Create a math quiz WinForms app. If you haven't completed that
tutorial, go through it first.
C#
VB
You can use new statements like this one to create buttons, labels, panels, OpenFileDialogs, ColorDialogs,
SoundPlayers, Randoms, and even forms. These items are called objects.
When you run your program, the form is started. The code behind it creates a Random object and names it
randomizer .
Your quiz needs variables to store the random numbers that it creates for each problem. Before using variables,
you declare them, which means listing their names and data types.
1. Add two integer variables to the form, and name them addend1 and addend2 .
NOTE
An integer variable is known as an int in C# or an Integer in Visual Basic. This kind of variable stores a positive or
negative number from -2147483648 through 2147483647 and can store only whole numbers, not decimals.
You use similar syntax to add an integer variable as you did to add the Random object, as the following
code shows.
C#
VB
1. Add a method that's named StartTheQuiz() . This method uses the Random object's Next() method to
generate random numbers for the labels. StartTheQuiz() will eventually fill in all the problems and then
start the timer, so add this information to the summary comment. The function should look like the
following code.
C#
VB
/// <summary>
/// Start the quiz by filling in all of the problems
/// and starting the timer.
/// </summary>
public void StartTheQuiz()
{
// Fill in the addition problem.
// Generate two random numbers to add.
// Store the values in the variables 'addend1' and 'addend2'.
addend1 = randomizer.Next(51);
addend2 = randomizer.Next(51);
When you use the Next() method with a Random object, such as when you call randomizer.Next(51) , you get a
random number that's less than 51, or between 0 and 50. This code calls randomizer.Next(51) so that the two
random numbers add up to an answer that's between 0 and 100.
Take a closer look at these statements.
C#
VB
plusLeftLabel.Text = addend1.ToString();
plusRightLabel.Text = addend2.ToString();
These statements set the Text properties of plusLeftLabel and plusRightLabel so that they display the two
random numbers. Label controls display values in text format, and in programming, strings hold text. Each
integer's ToString() method converts the integer into text that a label can display.
1. Modify the StartTheQuiz() method by adding the following code, starting with the "Fill in the subtraction
problem" comment.
C#
VB
/// <summary>
/// Start the quiz by filling in all of the problem
/// values and starting the timer.
/// </summary>
public void StartTheQuiz()
{
// Fill in the addition problem.
// Generate two random numbers to add.
// Store the values in the variables 'addend1' and 'addend2'.
addend1 = randomizer.Next(51);
addend2 = randomizer.Next(51);
This code uses the Next() method of the Random class a little differently from how the addition problem does.
When you give the Next() method two values, it picks a random number that's greater than or equal to the first
value and less than the second one.
By using the Next() method with two arguments, you can ensure the subtraction problem has a positive
answer, the multiplication answer is at most 100, and the division answer isn't a fraction.
The first statement calls the new StartTheQuiz() method. The second statement sets the Enabled property of
the star tButton control to false so that the quiz taker can't select the button during a quiz.
Next steps
Advance to the next tutorial to add a timer to your math quiz and check user answers.
Tutorial part 3: Add a timer control to a math quiz WinForms app
Tutorial: Add a Timer control to a math quiz
WinForms app
6/24/2022 • 9 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you'll build a math quiz. The quiz contains four random math problems that a quiz
taker tries to answer within a specified time.
The quiz uses a Timer control. The code behind this control tracks the elapsed time and checks the quiz taker's
answers.
In this third tutorial, you learn how to:
Add a Timer control.
Add an event handler for the timer.
Write code to check the user's answers, display messages, and fill in the correct answers.
Prerequisites
This tutorial builds on previous tutorials, starting with Create a math quiz WinForms app. If you haven't
completed those tutorials, go through them first.
IMPORTANT
Use the programming language control at the top right of this page to view either the C# code snippet or the Visual Basic
code snippet.
1. In Windows Forms Designer , move a Timer control from the Components category of the Toolbox
to your form. The control appears in the gray area at the bottom of the design window.
2. On the form, select the timer1 icon that you just added, and set its Inter val property to 1000 . Because
this interval is in milliseconds, a value of 1000 causes the timer to raise a Tick event every second.
/// <summary>
/// Check the answers to see if the user got everything right.
/// </summary>
/// <returns>True if the answer's correct, false otherwise.</returns>
private bool CheckTheAnswer()
{
if ((addend1 + addend2 == sum.Value)
&& (minuend - subtrahend == difference.Value)
&& (multiplicand * multiplier == product.Value)
&& (dividend / divisor == quotient.Value))
return true;
else
return false;
}
This method determines the answers to the math problems and compares the results to the values in the
NumericUpDown controls. In this code:
The Visual Basic version uses the Function keyword instead of the usual Sub keyword because this
method returns a value.
You can't easily enter the multiplication sign (×) and the division sign (÷) by using the keyboard, so C#
and Visual Basic accept an asterisk (*) for multiplication and a slash mark (/) for division.
In C#, is the logical and operator. In Visual Basic, the equivalent operator is AndAlso . You use the
&&
logical and operator to check whether more than one condition is true. In this case, if the values are all
correct, the method returns a value of true . Otherwise, the method returns a value of false .
The if statement uses the Value property of a NumericUpDown control to access the control's current
value. In the next section, you use the same property to display the correct answer in each control.
1. On the form, double-click the Timer control, or select it and then select Enter . These actions add a Tick
event handler to the timer. The code editor appears and displays the Tick handler's method.
2. Add the following statements to the new event handler method.
C#
VB
private void timer1_Tick(object sender, EventArgs e)
{
if (CheckTheAnswer())
{
// If CheckTheAnswer() returns true, then the user
// got the answer right. Stop the timer
// and show a MessageBox.
timer1.Stop();
MessageBox.Show("You got all the answers right!",
"Congratulations!");
startButton.Enabled = true;
}
else if (timeLeft > 0)
{
// If CheckTheAnswer() returns false, keep counting
// down. Decrease the time left by one second and
// display the new time left by updating the
// Time Left label.
timeLeft = timeLeft - 1;
timeLabel.Text = timeLeft + " seconds";
}
else
{
// If the user ran out of time, stop the timer, show
// a MessageBox, and fill in the answers.
timer1.Stop();
timeLabel.Text = "Time's up!";
MessageBox.Show("You didn't finish in time.", "Sorry!");
sum.Value = addend1 + addend2;
difference.Value = minuend - subtrahend;
product.Value = multiplicand * multiplier;
quotient.Value = dividend / divisor;
startButton.Enabled = true;
}
}
Each second of the quiz, this method runs. The code first checks the value that CheckTheAnswer() returns.
If all answers are correct, that value is true , and the quiz ends:
The timer stops.
A congratulatory message appears.
The Enabled property of the star tButton control is set to true so that the quiz taker can start
another quiz.
If CheckTheAnswer() returns false , the code checks the value of timeLeft :
If this variable is greater than 0, the timer subtracts 1 from timeLeft . It also updates the Text property
of the timeLabel control to show the quiz taker how many seconds remain.
If no time remains, the timer stops and changes the timeLabel text to Time's up! A message box
announces that the quiz is over, and the answers are revealed. The start button becomes available
again.
When your quiz starts, this code sets the timeLeft variable to 30 and the Text property of the timeLabel
control to 30 seconds. Then the Start() method of the Timer control starts the countdown.
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you'll build a math quiz. The quiz contains four random math problems that a quiz
taker tries to answer within a specified time.
This tutorial shows you how to enhance your quiz by clearing default values and by customizing the appearance
of controls.
In this final tutorial, you learn how to:
Add event handlers to clear the default NumericUpDown control values.
Customize the quiz.
Prerequisites
This tutorial builds on previous tutorials, starting with Create a math quiz WinForms app. If you haven't
completed those tutorials, go through them first.
The Events tab in Proper ties displays all the events that you can respond to for the item that you
selected on the form. In this case, all the listed events pertain to the NumericUpDown control.
2. Select the Enter event, enter answer_Enter , and then select Enter .
The code editor appears and displays the Enter event handler that you created for the sum
NumericUpDown control.
3. In the method for the answer_Enter event handler, add the following code:
C#
VB
if (answerBox != null)
{
int lengthOfAnswer = answerBox.Value.ToString().Length;
answerBox.Select(0, lengthOfAnswer);
}
}
IMPORTANT
Use the programming language control at the top right of this page to view either the C# code snippet or the Visual Basic
code snippet.
In this code:
The first line declares the method. It includes a parameter that's named sender . In C#, the parameter is
object sender . In Visual Basic, it's sender As System.Object . This parameter refers to the object whose event
is firing, which is known as the sender. In this case, the sender object is the NumericUpDown control.
The first line inside the method casts, or converts, the sender from a generic object to a NumericUpDown
control. That line also assigns the name answerBox to the NumericUpDown control. All the
NumericUpDown controls on the form will use this method, not just the addition problem's control.
The next line verifies whether answerBox was successfully cast as a NumericUpDown control.
The first line inside the if statement determines the length of the answer that's currently in the
NumericUpDown control.
The second line inside the if statement uses the answer length to select the current value in the control.
When the quiz taker selects the control, Visual Studio fires this event. This code selects the current answer. As
soon as the quiz taker starts to enter a different answer, the current answer is cleared and replaced with the new
answer.
1. In Windows Forms Designer , select the subtraction problem's NumericUpDown control.
2. In the Events page of the Proper ties dialog box, find the Enter event, and then select answer_Enter
from the drop-down menu. This event handler is the one that you just added.
3. Repeat the previous two steps for the multiplication and division NumericUpDown controls.
C#
VB
timeLabel.BackColor = Color.Red;
Next steps
Congratulations! You've finished this series of tutorials. You've completed these programming and design tasks
in the Visual Studio IDE:
Created a Visual Studio project that uses Windows Forms
Added labels, a button, and NumericUpDown controls
Added a timer
Set up event handlers for your controls
Written C# or Visual Basic code to handle the events
Continue learning with another tutorial series on how to build a matching game.
Tutorial 3: Create a matching game
Tutorial: Create a matching game WinForms app
6/24/2022 • 5 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you build a matching game, where the player matches pairs of hidden icons.
Use these tutorials to learn about the following tasks in the Visual Studio Integrated Design Environment (IDE).
Store objects, such as icons, in a List<T> object.
Use a foreach loop in C# or a For Each loop in Visual Basic to iterate through items in a list.
Keep track of a form's state by using reference variables.
Build an event handler to respond to events that you can use with multiple objects.
Make a timer that counts down and then fires an event exactly once after being started.
When you finish, you'll have a complete game.
Prerequisites
You need Visual Studio to complete this tutorial. Visit the Visual Studio downloads page for a free version.
Create your Windows Forms match game project
When you create your matching game, the first step is to create a Windows Forms App project.
1. Open Visual Studio.
2. On the start window, select Create a new project .
3. On the Create a new project window, search for Windows Forms. Then select Desktop from the All
project types list.
4. Select the Windows Forms App (.NET Framework) template for either C# or Visual Basic, and then
select Next .
NOTE
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a
new project window. In the Not finding what you're looking for? message, select the Install more tools
and features link.
Select Modify in the Visual Studio Installer. You might be prompted to save your work. Next, select Continue to
install the workload.
5. In the Configure your new project window, name your project MatchingGame, then select Create .
Visual Studio creates a solution for your app. A solution is a container for all of the projects and files needed by
your app.
At this point, Visual Studio displays an empty form in the Windows Form Designer .
NOTE
The colors are not in alphabetical order, and CornflowerBlue is near the bottom of the list.
Set the Dock property to Fill from the dropdown list by selecting the large middle button. This
option spreads the table out so that it covers the entire form.
Set the CellBorderStyle property to Inset . This value provides visual borders between each cell
on the board.
Select the triangle button in the upper-right corner of the TableLayoutPanel to display its task
menu. On the task menu, select Add Row twice to add two more rows. Then select Add Column
twice to add two more columns.
On the task menu, select Edit Rows and Columns to open the Column and Row Styles
window. For each column, select the Percent option, and then set each column's width to 25
percent.
Select Rows from the list at the top of the window, and then set each row's height to 25 percent.
When you're done, select OK to save your changes.
Your TableLayoutPanel is now a four-by-four grid with 16 equally-sized square cells. These rows and columns
are where the icons appear later.
NOTE
Webdings is a font of icons that ships with the Windows operating system. In your matching game, the player
matches pairs of icons. This font displays the icons to match.
Instead of c, try different letters in the Text property. An exclamation point is a spider, an uppercase N is an eye,
and a comma is a chili pepper.
3. Select your Label control and copy it to the next cell in the TableLayoutPanel. Select the Ctrl +C keys, or
on the menu bar, Edit > Copy . Then paste it by using Ctrl +V or Edit > Paste .
A copy of the first Label appears in the second cell of the TableLayoutPanel. Paste it again, and another
Label appears in the third cell. Keep pasting Label controls until all of the cells are filled.
This step completes the layout for your form.
Next steps
Advance to the next tutorial to learn how to assign a random icon to each label and add event handlers to labels.
Add icons to your Matching Game
Tutorial: Add icons to your matching game
WinForms app
6/24/2022 • 8 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you build a matching game, where the player matches pairs of hidden icons.
In the matching game, a player selects a square to see an icon, then chooses another square. If the icons match,
they stay visible. If not, the game hides both icons. In this tutorial, you assign icons to labels randomly. You set
them to be hidden and then displayed when selected.
In this second tutorial, you learn how to:
Add a Random object and a list of icons.
Assign a random icon to each label.
Add event handlers that show icons to the labels.
Prerequisites
This tutorial builds on the previous tutorial, Create a matching game application. If you haven't done that
tutorial, go through that one first.
IMPORTANT
Use the programming language control at the top right of this page to view either the C# code snippet or the Visual Basic
code snippet.
If you're using C#, be sure you put the code after the opening curly brace and just after the class declaration (
public partial class Form1 : Form ). If you're using Visual Basic, put the code right after the class declaration (
Public Class Form1 ).
You can use list objects to keep track of different types of items. A list can hold numbers, true/false values, text,
or other objects. In your matching game, the list object has 16 strings, one for each cell in the TableLayoutPanel
panel. Each string is a single letter that corresponds to the icons in the labels. These characters appear in the
Webdings font as a bus, a bike, and others.
NOTE
Lists can shrink and grow as needed, which is important in this program.
To learn more about lists, see List<T>. To see an example in C#, see A basic list example. To see an example in
Visual Basic, see Using a Simple Collection.
C#
VB
/// <summary>
/// Assign each icon from the list of icons to a random square
/// </summary>
private void AssignIconsToSquares()
{
// The TableLayoutPanel has 16 labels,
// and the icon list has 16 icons,
// so an icon is pulled at random from the list
// and added to each label
foreach (Control control in tableLayoutPanel1.Controls)
{
Label iconLabel = control as Label;
if (iconLabel != null)
{
int randomNumber = random.Next(icons.Count);
iconLabel.Text = icons[randomNumber];
// iconLabel.ForeColor = iconLabel.BackColor;
icons.RemoveAt(randomNumber);
}
}
}
You can enter this code just below the code you added in the previous section.
NOTE
One of the lines is commented out on purpose. You add it later in this procedure.
The AssignIconsToSquares() method iterates through each label control in the TableLayoutPanel. It runs the
same statements for each of them. The statements pull a random icon from the list.
The first line converts the control variable to a label named iconLabel .
The second line is an if statement that checks to make sure the conversion worked. If the conversion does
work, the statements in the if statement run.
The first line in the if statement creates a variable named randomNumber that contains a random
number that corresponds to one of the items in the icons list. It uses the Next() method of the Random
object. The Next method returns the random number. This line also uses the Count property of the icons list
to determine the range from which to choose the random number.
The next line assigns one of the icon list items to the Text property of the label.
The next line hides the icons. The line is commented out here so you can verify the rest of the code before
proceeding.
The last line in the if statement removes from the list the icon that has been added to the form.
1. Add a call to the AssignIconsToSquares() method to the Form1 constructor. This method fills the game
board with icons. Constructors are called when you create an object.
public Form1()
{
InitializeComponent();
AssignIconsToSquares();
}
For Visual Basic, add the AssignIconsToSquares() method call to the Form1_Load method.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AssignIconsToSquares()
End Sub
For more information, see Constructors (C# programming guide) or Use constructors and destructors.
2. Save your program and run it. It should show a form with random icons assigned to each label.
TIP
If the Webdings icons don't display properly on the form, set the UseCompatibleTextRendering property of
labels on the form to True .
3. Close your program, and then run it again. Different icons are assigned to each label.
The icons are visible now because you haven't hidden them. To hide them from the player, you can set
each label's ForeColor property to the same color as its BackColor property.
4. Stop the program. Remove the comment marks for the commented line of code inside the loop.
C#
VB
iconLabel.ForeColor = iconLabel.BackColor;
If you run the program again, the icons seem to have disappeared. Only a blue background appears. The icons
are randomly assigned and are still there.
Add event handlers to labels
In this matching game, a player reveals a hidden icon, then a second one. If the icons match, they stay visible.
Otherwise, both icons are hidden again.
To get your game to work this way, add a Click event handler that changes the color of the chosen label to match
the background.
1. Open the form in the Windows Forms Designer . Select Form1.cs or Form1.vb , and then select View
> Designer .
2. Choose the first label control to select it. Then, hold the Ctrl key while you select each of the other labels.
Be sure that every label is selected.
3. In the Proper ties window, select the Events button, which is a lightening bolt. For the Click event, select
label1_Click in the box.
4. Select the Enter key. The IDE adds a Click event handler called label1 _Click() to the code. Because
you selected all the labels, the handler is hooked to each of the labels.
5. Fill in the rest of the code.
C#
VB
/// <summary>
/// Every label's Click event is handled by this event handler
/// </summary>
/// <param name="sender">The label that was clicked</param>
/// <param name="e"></param>
private void label1_Click(object sender, EventArgs e)
{
Label clickedLabel = sender as Label;
if (clickedLabel != null)
{
// If the clicked label is black, the player clicked
// an icon that's already been revealed --
// ignore the click
if (clickedLabel.ForeColor == Color.Black)
return;
clickedLabel.ForeColor = Color.Black;
}
}
NOTE
If you copy and paste the label1_Click() code block rather than entering the code manually, be sure to replace the
existing label1_Click() code. Otherwise, you'll end up with a duplicate code block.
1. Select Debug > Star t Debugging to run your program. You should see an empty form with a blue
background. Choose any of the cells in the form. One of the icons should become visible. Continue
choosing different places in the form. As you choose the icons, they should appear.
Next steps
Advance to the next tutorial to learn how to change labels using a timer.
Use a timer in your Matching Game
Tutorial: Add reference variables and a timer control
to your matching game WinForms app
6/24/2022 • 9 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you build a matching game, where the player matches pairs of hidden icons.
Your Matching Game program needs to track which Label controls the player chooses. After a player chooses
the first label, the program should show the icon. After the second label is chosen, the program should display
both icons for a brief time. Then it hides both icons.
Your program keeps track of which Label you choose first and second by using reference variables. A timer
hides the icons and controls how long to show the icons
Add label references.
Add a timer.
Prerequisites
This tutorial builds on previous tutorials, Create a matching game application and Add icons to your matching
game. Do those tutorials first.
These statements don't cause Label controls to appear on the form because there's no new keyword. When the
program starts, both firstClicked and secondClicked are set to null for C# or Nothing for Visual Basic.
1. Modify your Click event handler to use the new firstClicked reference variable. Remove the last
statement in the label1_Click() event handler method ( clickedLabel.ForeColor = Color.Black; ) and
replace it with the if statement as follows.
C#
VB
/// <summary>
/// Every label's Click event is handled by this event handler
/// </summary>
/// <param name="sender">The label that was clicked</param>
/// <param name="e"></param>
private void label1_Click(object sender, EventArgs e)
{
Label clickedLabel = sender as Label;
if (clickedLabel != null)
{
// If the clicked label is black, the player clicked
// an icon that's already been revealed --
// ignore the click
if (clickedLabel.ForeColor == Color.Black)
return;
return;
}
}
}
1. Save and run your program. Choose one of the label controls, and its icon appears. Choose the next label
control, and notice that nothing happens.
Only the first icon that's chosen turns black. The other icons are invisible.
The program is already keeping track of the first label that the player chose. The reference firstClicked isn't
null in C# or Nothing in Visual Basic. When your if statement finds that firstClicked isn't equal to null
or Nothing , it runs the statements.
Add a timer
The Matching Game uses a Timer control the app. A timer waits, and then fires an event, referred to as a tick. A
timer can start and action or repeat an action regularly.
In your program, the timer enables a player to choose two icons. If the icons don't match, it hides the two icons
again after a short period of time.
1. Select the Toolbox tab, in the Components category, double-click or drag the Timer component to your
form. The timer icon, called timer1 , appears in a space below the form.
2. Select the Timer1 icon to select the timer. In the Proper ties window, select the Proper ties button to
view properties.
3. Set the Inter val property to 750 , which is 750 milliseconds.
The Inter val property tells the timer how long to wait between ticks, when it triggers its Tick event. Your
program calls the Start() method to start the timer after the player chooses the second label.
4. Choose the timer control icon and then press Enter , or double-click the timer. The IDE adds an empty Tick
event handler. Replace the code with the following code.
C#
VB
/// <summary>
/// This timer is started when the player clicks
/// two icons that don't match,
/// so it counts three quarters of a second
/// and then turns itself off and hides both icons
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
// Stop the timer
timer1.Stop();
C#
VB
/// <summary>
/// Every label's Click event is handled by this event handler
/// </summary>
/// <param name="sender">The label that was clicked</param>
/// <param name="e"></param>
private void label1_Click(object sender, EventArgs e)
{
// The timer is only on after two non-matching
// icons have been shown to the player,
// so ignore any clicks if the timer is running
if (timer1.Enabled == true)
return;
if (clickedLabel != null)
{
// If the clicked label is black, the player clicked
// an icon that's already been revealed --
// ignore the click
if (clickedLabel.ForeColor == Color.Black)
return;
The code at the top of the method checks whether the timer was started by checking the value of the
Enabled property. If the player chooses the first and second Label controls and the timer starts, choosing
a third label won't do anything.
The code at the bottom of the method sets the secondClicked reference variable to track the second
Label control. Then, it sets that label icon color to black to make it visible. Then, it starts the timer in one-
shot mode, so that it waits 750 milliseconds and then fires a single tick. The timer's Tick event handler
hides the two icons and resets the firstClicked and secondClicked reference variables. The form is
ready for the player to choose another pair of icons.
NOTE
If you copy and paste the label1_Click() code block rather than entering the code manually, be sure to replace the
existing label1_Click() code. Otherwise, you'll end up with a duplicate code block.
1. Save and run your program. Select a square and the icon becomes visible. Choose another square. The icon
appears briefly and then both icons disappear.
Your program now keeps track of the first and second icons that you choose. It uses the timer to pause before
making the icons disappear.
Next steps
Advance to the next tutorial to learn how to finish your Matching Game.
Show congratulations message for your Matching Game
Tutorial: Display a message in your matching game
WinForms app
6/24/2022 • 7 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this series of four tutorials, you build a matching game, where the player matches pairs of hidden icons.
In this tutorial, you revise your Matching Game to keep matched pairs visible and to display a congratulations
message when a player wins.
In this tutorial, you learn how to:
Keep pairs visible.
Verify if a player won.
Try other features.
Prerequisites
This tutorial builds on previous tutorials, Create a matching game application, Add icons to your matching game,
and Add a timer in your matching game Do those tutorials first.
IMPORTANT
Use the programming language control at the top right of this page to view either the C# code snippet or the Visual Basic
code snippet.
The if statement checks whether the icon in the first label that the player chooses is the same as the icon in
the second label. If the icons are the same, the program runs its three statements. The first two statements reset
the firstClicked and secondClicked reference variables. They no longer keep track of any of the labels. The
third statement is a return statement, which skips the rest of the statements in the method without running
them.
1. Run the program, and then start choosing squares on the form.
If you choose a pair that doesn't match, the timer's Tick event triggers. Both icons disappear.
If you choose a matching pair, the new if statement runs. The return statement causes the method to skip the
code that starts the timer. The icons stay visible.
C#
VB
/// <summary>
/// Check every icon to see if it is matched, by
/// comparing its foreground color to its background color.
/// If all of the icons are matched, the player wins
/// </summary>
private void CheckForWinner()
{
// Go through all of the labels in the TableLayoutPanel,
// checking each one to see if its icon is matched
foreach (Control control in tableLayoutPanel1.Controls)
{
Label iconLabel = control as Label;
if (iconLabel != null)
{
if (iconLabel.ForeColor == iconLabel.BackColor)
return;
}
}
The method uses another foreach loop in C# or For Each loop in Visual Basic to go through each label in the
TableLayoutPanel. It checks each label's icon color to verify whether it matches the background. If the colors
match, the icon remains invisible, and the player hasn't matched all of the icons remaining.
In that case, the program uses a return statement to skip the rest of the method. If the loop gets through all of
the labels without executing the return statement, that means that all of the icons on the form were matched.
The program shows a MessageBox to congratulate the player on winning, and then calls the Close() method to
end the game.
Have the label's Click event handler call the new CheckForWinner() method.
C#
VB
Next steps
Congratulations! You've completed this series of tutorials. You've done these programming and design tasks in
the Visual Studio IDE:
Stored objects, such as icons, in a list
Used a loop in C# or Visual Basic to iterate through a list
Kept track of state by using reference variables
Built an event handler to respond to events for multiple objects
Added a timer that counts down and fires an event
Advance to this article for a deep dive into Windows Forms Designer.
Tutorial: Get started with Windows Forms Designer
Tutorial: Open a project from a repo
6/24/2022 • 8 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this tutorial, you'll use Visual Studio to connect to a repository for the first time, clone it, and then open a
project from it.
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
3. Enter or type the repository location, and then select the Clone button.
4. You might be asked for your user sign-in information in the Git User Information dialog box. You can
either add your information or edit the default information it provides.
Select Save to add the info to your global .gitconfig file. (Or, you can select Cancel if you'd like to add the
info later.)
TIP
For more information about signing in to Visual Studio, see the Sign in to Visual Studio page. For specific
information about how to use your GitHub account to sign in, see the Work with GitHub accounts in Visual
Studio page. And if you receive a trust notification and want to know more about it, see the Configure trust
settings for files and folders page.
TIP
The default view is set to Folder View. You can change it to Solution View from the Git menu. Select Settings > Source
Control > Git Global Settings > Automatically load the solution when opening a Git repositor y to do so.
Start coding!
Use the IDE
You can also use the Git menu or the Select Repositor y control in the Visual Studio IDE to interact with a
repository's folders and files.
Here's how.
To clone a repo and open a project
1. In the Visual Studio IDE, select the Git menu, and then select Clone Repositor y .
2. Follow the prompts to connect to the Git repository that includes the files you're looking for.
To open local folders and files
1. In the Visual Studio IDE, select the Git menu, select Local Repositories , and then select Open Local
Repositor y .
Alternatively, you can perform the same task from Solution Explorer . To do so, choose the Select
Repositor y control, select the ellipsis icon that's next to the Filter repositories box, and then select
Open Local Repositor y .
2. Follow the prompts to connect to the Git repository that has the files you're looking for.
4. You might be asked for your user sign-in information in the Git User Information dialog box. You can
either add your information or edit the default information it provides.
Select Save to add the info to your global .gitconfig file. (Or, you can select Cancel if you'd like to save
the info later.)
TIP
For more information about signing in to Visual Studio, see the Sign in to Visual Studio page. And for specific
information about how to use your GitHub account to sign in, see the Work with GitHub accounts in Visual Studio
page.
Next, Visual Studio automatically loads and opens the solution from the repository.
5. If your repository contains multiple solutions, Solution Explorer displays them. For a list view of the
solutions, select the Switch Views button in Solution Explorer.
Solution Explorer then gives you the option to open the root folder in Folder View or to select a solution
file to open.
If you've opened the project or solution recently, select it from the Open recent section to quickly open it
again.
TIP
You can also use the Git menu in the Visual Studio IDE to open local folders and files from a repo that you've
previously cloned.
Start coding!
Visual Studio 2019 version 16.7 and earlier
Here's how to use Git in Visual Studio 2019 version 16.7 or earlier.
Clone a GitHub repo and then open a project
1. Open Visual Studio 2019 version 16.7 or earlier.
2. On the start window, select Clone or check out code .
If you do not have a solution file (specifically, an .sln file) in your repo, the fly-out menu says "No
Solutions Found." However, you can double-click any file from the folder menu to open it in the Visual
Studio code editor.
Start coding!
Browse to an Azure DevOps repo with Visual Studio 2019
What you see when you browse to and clone an Azure DevOps repository by using Visual Studio 2019 depends
on which version you have. Specifically, if you've installed version version 16.8 or later, we've changed the UI to
accommodate a new, more fully integrated Git experience in Visual Studio in Visual Studio.
But no matter which version you have installed, you can always browse to and clone an Azure DevOps repo with
Visual Studio.
Visual Studio 2019 version 16.8 and later
1. Open Visual Studio 2019 version 16.8 or later.
2. On the start window, select Clone a repositor y .
Next, Visual Studio opens Solution Explorer that shows the folders and files.
6. Select the Team Explorer tab to view the Azure DevOps actions.
Visual Studio 2019 version 16.7 and earlier
1. Open Visual Studio 2019 version 16.7 or earlier.
2. On the start window, select Clone or check out code .
3. In the Browse a repositor y section, select Azure DevOps .
Visual Studio opens Team Explorer and a notification appears when the clone is complete.
5. To view your folders and files, select the Show Folder View link.
Visual Studio opens Solution Explorer .
6. Choose the Solutions and Folders link to search for a solution file (specifically, an .sln file) to open.
If you do not have a solution file in your repo, a 'No Solutions Found' message appears. However, you can
double-click any file from the folder menu to open it in the Visual Studio code editor.
Next steps
Feel free to dive into any of the following language-specific tutorials:
Visual Studio tutorials | C#
Visual Studio tutorials | Visual Basic
Visual Studio tutorials | C++
Visual Studio tutorials | Python
Visual Studio tutorials | JavaScript , TypeScript , and Node.js
See also
The Git experience in Visual Studio
Compare Git and Team Explorer side-by-side
Microsoft Learn: Get started with Git and GitHub in Visual Studio
Microsoft Learn: Get started with Azure DevOps
Azure DevOps Services: Get started with Azure Repos and Visual Studio
Visual Studio version control documentation
Learn to use the code editor with Visual Basic
6/24/2022 • 10 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
In this 10-minute introduction to the code editor in Visual Studio, we'll add code to a file to look at some of the
ways that Visual Studio makes writing, navigating, and understanding Visual Basic code easier.
TIP
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
This article assumes you're already familiar with Visual Basic. If you aren't, we suggest you look at a tutorial such
as Create a simple Visual Basic (VB) console app first.
TIP
To follow along with this article, make sure you have the Visual Basic settings selected for Visual Studio. For information
about selecting settings for the integrated development environment (IDE), see Select environment settings.
2. We're not using the morewords array, but we may use it later so we don't want to completely delete it.
Instead, let's comment out those lines. Select the entire definition of morewords to the closing curly brace,
and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the
keyboard, press Ctrl +K , Ctrl +C .
The Visual Basic comment character ' is added to the beginning of each selected line to comment out
the code.
2. We're not using the morewords array, but we may use it later so we don't want to completely delete it.
Instead, let's comment out those lines. Select the entire definition of morewords to the closing curly brace,
and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the
keyboard, press Ctrl +K , Ctrl +C .
The Visual Basic comment character ' is added to the beginning of each selected line to comment out
the code.
The code block collapses to just the first line, followed by an ellipsis ( ... ). To expand the code block again, click
the same gray box that now has a plus sign in it, or press Ctrl +M , Ctrl +M again. This feature is called Outlining
and is especially useful when you're collapsing long methods or entire classes.
You can collapse sections of code to focus just on the parts that are of interest to you. To practice, let's collapse
the _words array to one line of code. Choose the small gray box with the minus sign inside it in the margin of
the line that says Dim _words = New String() { . Or, if you're a keyboard user, place the cursor anywhere in the
array definition and press Ctrl +M , Ctrl +M .
The code block collapses to just the first line, followed by an ellipsis ( ... ). To expand the code block again,
choose the same gray box that now has a plus sign in it, or press Ctrl +M , Ctrl +M again. This feature is called
Outlining and is especially useful when you're collapsing long methods or entire classes.
2. Close the peek definition window by choosing the small box with an "x" at the top right of the pop-up
window.
You see IntelliSense show you Quick Info about the query symbol.
2. To insert the rest of the word query by using IntelliSense's word completion functionality, press Tab .
3. Finish off the code block to look like the following code.
For Each str In query
Console.WriteLine(str)
Next
IntelliSense is an invaluable resource when you're coding. It can show you information about available members
of a type, or parameter details for different overloads of a method. You can also use IntelliSense to complete a
word after you type enough characters to disambiguate it. Let's add a line of code to print out the ordered
strings to the console window, which is the standard place for output from the program to go.
1. Below the query variable, start typing the following code:
You see IntelliSense show you Quick Info about the query symbol.
2. To insert the rest of the word query by using IntelliSense's word completion functionality, press Tab .
3. Finish off the code block to look like the following code.
Refactor a name
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable
or method. Let's try out Visual Studio's refactor functionality to rename the _words variable to words .
1. Place your cursor over the definition of the _words variable and choose Rename from the right-click or
context menu.
A pop-up Rename dialog box appears at the top right of the editor.
2. With the variable _words still selected, type in the desired name of words . Notice that the reference to
words in the query is also automatically renamed. Before you press Enter or click Apply , select the
Include comments checkbox in the Rename pop-up box.
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable
or method. Let's try out Visual Studio's refactor functionality to rename the _words variable to words .
1. Place your cursor over the definition of the _words variable and choose Rename from the right-click or
context menu.
A pop-up Rename dialog box appears at the top right of the editor.
2. With the variable _words still selected, type in the desired name of words . Notice that the reference to
words in the query is also automatically renamed. Before you press Enter or Apply , select the Include
comments checkbox in the Rename pop-up box.
Next steps
Learn about projects and solutions
See also
Code snippets
Navigate code
Outlining
Go To Definition and Peek Definition
Refactoring
Use IntelliSense
Compile and build in Visual Studio
6/24/2022 • 2 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
For a first introduction to building within the IDE, see Walkthrough: Building an application.
You can use any of the following methods to build an application: the Visual Studio IDE, the MSBuild command-
line tools, and Azure Pipelines:
B UIL D M ET H O D B EN EF IT S
The documentation in this section goes into further details of the IDE-based build process. For more information
on the other methods, see CMake, MSBuild and Azure Pipelines, respectively.
NOTE
This topic applies to Visual Studio on Windows. For Visual Studio for Mac, see Compile and build in Visual Studio for Mac.
See also
Building (compiling) website projects
Compile and build (Visual Studio for Mac)
CMake projects in Visual Studio
Tutorial: Learn to debug Visual Basic code using
Visual Studio
6/24/2022 • 19 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
This article introduces the features of the Visual Studio debugger in a step-by-step walkthrough. If you want a
higher-level view of the debugger features, see First look at the debugger. When you debug your app, it usually
means that you are running your application with the debugger attached. When you do this, the debugger
provides many ways to see what your code is doing while it runs. You can step through your code and look at
the values stored in variables, you can set watches on variables to see when values change, you can examine the
execution path of your code, see whether a branch of code is running, and so on. If this is the first time that
you've tried to debug code, you may want to read Debugging for absolute beginners before going through this
article.
Although the demo app is Visual Basic, most of the features are applicable to C#, C++, F#, Python, JavaScript,
and other languages supported by Visual Studio (F# does not support Edit-and-continue. F# and JavaScript do
not support the Autos window). The screenshots are in Visual Basic.
In this tutorial, you will:
Start the debugger and hit breakpoints.
Learn commands to step through code in the debugger
Inspect variables in data tips and debugger windows
Examine the call stack
Prerequisites
You must have Visual Studio 2019 installed and the .NET Core cross-platform development workload.
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
If you need to install the workload but already have Visual Studio, go to Tools > Get Tools and Features...,
which opens the Visual Studio Installer. The Visual Studio Installer launches. Choose the .NET Core cross-
platform development workload, then choose Modify .
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
If you need to install the workload but already have Visual Studio, go to Tools > Get Tools and Features...,
which opens the Visual Studio Installer. The Visual Studio Installer launches. Choose the .NET desktop
development workload, then choose Modify .
Create a project
First, you'll create a .NET Core console application project. The project type comes with all the template files
you'll need, before you've even added anything!
1. Open Visual Studio.
If the start window is not open, choose File > Star t Window .
2. On the start window, choose Create a new project .
3. On the Create a new project window, enter, or type console in the search box. Next, choose Visual
Basic from the Language list, and then choose Windows from the Platform list.
After you apply the language and platform filters, choose the Console App template for .NET Core, and
then choose Next .
NOTE
If you do not see the Console App template, you can install it from the Create a new project window. In the
Not finding what you're looking for? message, choose the Install more tools and features link. Then, in
the Visual Studio Installer, choose the .NET Core cross-platform development workload.
4. In the Configure your new project window, type or enter get-started-debugging in the Project name
box. Then, choose Next .
5. Choose either the recommended target framework (.NET Core 3.1) or .NET 5, and then choose Create .
Visual Studio opens your new project.
1. Open Visual Studio.
If the start window is not open, choose File > Star t Window .
2. On the start window, choose Create a new project .
3. On the Create a new project window, enter, or type console in the search box. Next, choose Visual
Basic from the Language list, and then choose Windows from the Platform list.
After you apply the language and platform filters, choose the Console Application template for .NET
Core, and then choose Next .
NOTE
If you do not see the Console Application template, you can install it from the Create a new project window.
In the Not finding what you're looking for? message, choose the Install more tools and features link.
Then, in the Visual Studio Installer, choose the .NET desktop development workload.
4. In the Configure your new project window, type or enter get-started-debugging in the Project name
box. Then, choose Next .
5. On the Additional Information window, ensure the recommended target framework is (.NET 6.0), and
then choose Create .
Visual Studio opens your new project.
Class ArrayExample
Public Shared Sub Main()
Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c}
Dim name As String = ""
Dim a As Integer() = New Integer(9) {}
Console.ReadKey()
End Sub
Hello, f! Count to 1
Hello, fr! Count to 2
Hello, fre! Count to 3
Hello, fred! Count to 4
Hello, fred ! Count to 5
Hello, fred s! Count to 6
Hello, fred sm! Count to 7
Hello, fred smi! Count to 8
Hello, fred smit! Count to 9
Hello, fred smith! Count to 10
In this tutorial, we'll take a closer look at this app using the debugger and get a look at the debugger
features.
2. Stop the debugger by pressing the red stop button (Shift + F5 ).
3. In the console window, press a key to close the console window.
1. Press F5 (Debug > Star t Debugging ) or select the green Star t Debugging button in the Debug
Toolbar.
F5 starts the app with the debugger attached to the app process, but right now we haven't done anything
special to examine the code. So the app just loads and you see the console output.
Hello, f! Count to 1
Hello, fr! Count to 2
Hello, fre! Count to 3
Hello, fred! Count to 4
Hello, fred ! Count to 5
Hello, fred s! Count to 6
Hello, fred sm! Count to 7
Hello, fred smi! Count to 8
Hello, fred smit! Count to 9
Hello, fred smith! Count to 10
In this tutorial, we'll take a closer look at this app using the debugger and get a look at the debugger
features.
2. Stop the debugger by pressing (Shift + F5 ) or select the red Stop Debugging button in the Debug
Toolbar.
The yellow arrow represents the statement on which the debugger paused, which also suspends app
execution at the same point (this statement has not yet executed).
If the app is not yet running, F5 starts the debugger and stops at the first breakpoint. Otherwise, F5
continues running the app to the next breakpoint.
Breakpoints are a useful feature when you know the line of code or the section of code that you want to
examine in detail. For information on the different types of breakpoints you can set, such as conditional
breakpoints, see Using breakpoints.
1. In the For loop of the Main function, set a breakpoint by clicking the left margin of the following line of
code:
name += letters(i)
The yellow arrow represents the statement on which the debugger paused, which also suspends app
execution at the same point (this statement has not yet executed).
If the app is not yet running, F5 starts the debugger and stops at the first breakpoint. Otherwise, F5
continues running the app to the next breakpoint.
Breakpoints are a useful feature when you know the line of code or the section of code that you want to
examine in detail. For information on the different types of breakpoints you can set, such as conditional
breakpoints, see Using breakpoints.
2. Press F11 one more time to step into the SendMessage method.
The yellow pointer advances into the SendMessage method.
F11 is the Step Into command and advances the app execution one statement at a time. F11 is a good
way to examine the execution flow in the most detail. (To move faster through code, we show you some
other options also.) By default, the debugger skips over non-user code (if you want more details, see Just
My Code).
Let's say that you are done examining the SendMessage method, and you want to get out of the method
but stay in the debugger. You can do this using the Step Out command.
3. Press Shift + F11 (or Debug > Step Out ).
This command resumes app execution (and advances the debugger) until the current method or function
returns.
You should be back in the For loop in the Main method, paused at the SendMessage method call.
4. Press F11 several times until you get back to the SendMessage method call again.
5. While paused at the method call, press F10 (or choose Debug > Step Over ) once.
Notice this time that the debugger does not step into the SendMessage method. F10 advances the
debugger without stepping into functions or methods in your app code (the code still executes). By
pressing F10 on the SendMessage method call (instead of F11 ), we skipped over the implementation
code for SendMessage (which maybe we're not interested in right now). For more information on different
ways to move through your code, see Navigate code in the debugger.
In this article, we use the keyboard shortcuts, because it's a good way to get fast at executing your app in the
debugger (equivalent commands such as menu commands are shown in parentheses).
1. While paused in the For loop in the Main method, press F11 (or choose Debug > Step Into ) twice to
advance to the SendMessage method call.
After pressing F11 twice, you should be at this line of code:
SendMessage(name, a(i))
2. Press F11 one more time to step into the SendMessage method.
The yellow pointer advances into the SendMessage method.
F11 is the Step Into command and advances the app execution one statement at a time. F11 is a good
way to examine the execution flow in the most detail. (To move faster through code, we show you some
other options also.) By default, the debugger skips over non-user code (if you want more details, see Just
My Code).
Let's say that you are done examining the SendMessage method, and you want to get out of the method
but stay in the debugger. You can do this using the Step Out command.
3. Press Shift + F11 (or Debug > Step Out ).
This command resumes app execution (and advances the debugger) until the current method or function
returns.
You should be back in the For loop in the Main method, paused at the SendMessage method call.
4. Press F11 several times until you get back to the SendMessage method call again.
5. While paused at the method call, press F10 (or choose Debug > Step Over ) once.
Notice this time that the debugger does not step into the SendMessage method. F10 advances the
debugger without stepping into functions or methods in your app code (the code still executes). By
pressing F10 on the SendMessage method call (instead of F11 ), we skipped over the implementation
code for SendMessage (which maybe we're not interested in right now). For more information on different
ways to move through your code, see Navigate code in the debugger.
NOTE
The Run to Click button is new in Visual Studio 2017. (If you don't see the green arrow button, use F11 in this
example instead to advance the debugger to the right place.)
The value of the variable changes with each iteration of the For loop, showing values of f , then fr ,
then fre , and so on.
Often, when debugging, you want a quick way to check property values on variables, to see whether they
are storing the values that you expect them to store, and the data tips are a good way to do it.
Features that allow you to inspect variables are one of the most useful features of the debugger, and there are
different ways to do it. Often, when you try to debug an issue, you are attempting to find out whether variables
are storing the values that you expect them to have at a particular time.
1. While paused on the name += letters[i] statement, hover over the letters variable and you see its
default value, the value of the first element in the array, "f"c .
2. Next, hover over the name variable, and you see its current value, an empty string.
3. Press F5 (or Debug > Continue ) a few times to iterate several times through the For loop, pausing
again at the breakpoint, and hovering over the name variable each time to check its value.
The value of the variable changes with each iteration of the For loop, showing values of f , then fr ,
then fre , and so on.
Often, when debugging, you want a quick way to check property values on variables, to see whether they
are storing the values that you expect them to store, and the data tips are a good way to do it.
The Locals window shows you the variables that are in the current scope, that is, the current execution
context.
1. Look at the Autos window at the bottom of the code editor.
If it is closed, open it while paused in the debugger by choosing Debug > Windows > Autos .
In the Autos window, you see variables and their current value. The Autos window shows all variables
used on the current line or the preceding line (Check documentation for language-specific behavior).
2. Next, look at the Locals window, in a tab next to the Autos window.
3. Expand the letters variable to show the elements that it contains.
The Locals window shows you the variables that are in the current scope, that is, the current execution
context.
Set a watch
1. In the main code editor window, right-click the name variable and choose Add Watch .
The Watch window opens at the bottom of the code editor. You can use a Watch window to specify a
variable (or an expression) that you want to keep an eye on.
Now, you have a watch set on the name variable, and you can see its value change as you move through
the debugger. Unlike the other variable windows, the Watch window always shows the variables that you
are watching (they're grayed out when out of scope).
NOTE
The Call Stack window is similar to the Debug perspective in some IDEs like Eclipse.
The call stack is a good way to examine and understand the execution flow of an app.
You can double-click a line of code to go look at that source code and that also changes the current scope
being inspected by the debugger. This action does not advance the debugger.
You can also use right-click menus from the Call Stack window to do other things. For example, you can
insert breakpoints into specified functions, advance the debugger using Run to Cursor , and go examine
source code. For more information, see How to: Examine the Call Stack.
1. While paused in the For loop, click the Call Stack window, which is open by default in the lower right
pane.
If it is closed, open it while paused in the debugger by choosing Debug > Windows > Call Stack .
2. Click F11 a few times until you see the debugger pause in the SendMessage method. Look at the Call
Stack window.
The Call Stack window shows the order in which methods and functions are getting called. The top line
shows the current function (the SendMessage method in this app). The second line shows that
SendMessage was called from the Main method, and so on.
NOTE
The Call Stack window is similar to the Debug perspective in some IDEs like Eclipse.
The call stack is a good way to examine and understand the execution flow of an app.
You can double-click a line of code to go look at that source code and that also changes the current scope
being inspected by the debugger. This action does not advance the debugger.
You can also use right-click menus from the Call Stack window to do other things. For example, you can
insert breakpoints into specified functions, advance the debugger using Run to Cursor , and go examine
source code. For more information, see How to: Examine the Call Stack.
WARNING
Often you need to be careful with this feature, and you see a warning in the tooltip. You may see other warnings,
too. Moving the pointer cannot revert your application to an earlier app state.
Next steps
In this tutorial, you've learned how to start the debugger, step through code, and inspect variables. You may
want to get a high-level look at debugger features along with links to more information.
First look at the debugger
Get started with unit testing
6/24/2022 • 6 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
Use Visual Studio to define and run unit tests to maintain code health, ensure code coverage, and find errors and
faults before your customers do. Run your unit tests frequently to make sure your code is working properly.
In this article, the code uses C# and C++, illustrations are in C#, but the concepts and features apply to .NET
languages, C++, Python, JavaScript, and TypeScript.
namespace HelloWorld
{
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}
}
2. In Solution Explorer , select the solution node. Then, from the top menu bar, select File > Add > New
Project .
3. In the new project dialog box, find the unit test project to use.
Type test in the search box to find a unit test project template for the test framework you want to use,
such as MSTest (C#) or the Native Unit Test project (C++), and select it.
Starting in Visual Studio 2017 version 14.8, the .NET languages include built-in templates for NUnit and
xUnit. For C++, in this example select the Native Unit Test project, which uses Microsoft Native Unit Test
Framework. (To use a different C++ test framework, see Writing unit tests for C/C++). For Python, see
Set up unit testing in Python code to set up your test project.
TIP
For C# only, you can create unit test projects from code using a faster method. For more information, see Create
unit test projects and test methods. To use this method with .NET Core or .NET Standard, Visual Studio 2019 or
later is required.
The following illustration shows an MSTest unit test, which is supported in .NET.
Click Next , choose a name for the test project, and then click Create .
Click Next , choose a name for the test project, and then click Create .
The project is added to your solution.
4. In the unit test project, add a reference to the project you want to test by right-clicking on References or
Dependencies and then choosing Add Reference or Add Project Reference .
5. Select the project that contains the code you'll test and click OK .
6. Add code to the unit test method.
For example, you might use the following code by selecting the correct documentation tab that matches
your test framework: MSTest, NUnit, or xUnit (supported on .NET only), or C++ Microsoft Native Unit Test
Framework.
MSTest
NUnit
xUnit
Microsoft Native Unit Test Framework
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using System;
namespace HelloWorldTests
{
[TestClass]
public class UnitTest1
{
private const string Expected = "Hello World!";
[TestMethod]
public void TestMethod1()
{
using (var sw = new StringWriter())
{
Console.SetOut(sw);
HelloWorld.Program.Main();
NOTE
To follow these steps, Visual Studio Enterprise is required, along with .NET code and one of the following test frameworks:
MSTest, xUnit, or NUnit.
1. Turn live unit testing from the Test menu by choosing Test > Live Unit Testing > Star t .
2. View the results of the tests within the code editor window as you write and edit code.
3. Click a test result indicator to see more information, such as the names of the tests that cover that
method.
For more information about live unit testing, see Live unit testing.
Next steps
Unit test basics
Create and run unit tests for managed code
Write unit tests for C/C++
Create a database and add tables in Visual Studio
6/24/2022 • 6 minutes to read • Edit Online
Applies to: Visual Studio Visual Studio for Mac Visual Studio Code
You can use Visual Studio to create and update a local database file in SQL Server Express LocalDB. You can also
create a database by executing Transact-SQL statements in the SQL Ser ver Object Explorer tool window in
Visual Studio. In this topic, we'll create an .mdf file and add tables and keys by using the Table Designer.
Prerequisites
To complete this walkthrough, you'll need the .NET desktop development and Data storage and
processing workloads installed in Visual Studio. To install them, open Visual Studio Installer and choose
Modify (or More > Modify ) next to the version of Visual Studio you want to modify.
NOTE
The procedures in this article apply only to .NET Framework Windows Forms projects, not to .NET Core Windows Forms
projects.
TIP
If you can't expand the Data Connections node, or the SampleDatabase.mdf connection is not listed, select the
Connect to Database button in the Server Explorer toolbar. In the Add Connection dialog box, make sure
that Microsoft SQL Ser ver Database File is selected under Data source , and then browse to and select the
SampleDatabase.mdf file. Finish adding the connection by selecting OK .
C O L UM N N A M E DATA T Y P E A L LO W N UL L S
4. Right-click on the CustomerID row, and then select Set Primar y Key .
5. Right-click on the default row ( Id ), and then select Delete .
6. Name the Customers table by updating the first line in the script pane to match the following sample:
CREATE TABLE [dbo].[Customers]
7. Add an index constraint to the Customers table. Add a comma at the end of the Phone line, then add the
following sample before the closing parenthesis:
8. In the upper-left corner of Table Designer , select Update , or press Shift +Alt +U .
9. In the Preview Database Updates dialog box, select Update Database .
The Customers table is created in the local database file.
Create the Orders table
1. Add another table, and then add a row for each entry in the following table:
C O L UM N N A M E DATA T Y P E A L LO W N UL L S
2. Set OrderID as the primary key, and then delete the default row.
3. Name the Orders table by updating the first line in the script pane to match the following sample:
4. Add an index constraint to the Customers table. Add a comma at the end of the OrderQuantity line, then
add the following sample before the closing parenthesis:
5. In the upper-left corner of the Table Designer , select Update , or press Shift +Alt +U ..
6. In the Preview Database Updates dialog box, select Update Database .
The Orders table is created in the local database file. If you expand the Tables node in Server Explorer,
you see the two tables:
If you don't see it, hit the Refresh toolbar button.
Create a foreign key
1. In the context pane on the right side of the Table Designer grid for the Orders table, right-click on
Foreign Keys and select Add New Foreign Key .
2. In the text box that appears, replace the text ToTable with Customers .
3. In the T-SQL pane, update the last line to match the following sample:
4. In the upper-left corner of the Table Designer , select Update (Shift +Alt +U ).
5. In the Preview Database Updates dialog box, select Update Database .
The foreign key is created.
IMPORTANT
Make sure that all order IDs and order quantities are integers and that each customer ID matches a value that
you specified in the CustomerID column of the Customers table.
Congratulations! You now know how to create tables, link them with a foreign key, and add data.
See also
Accessing data in Visual Studio