Overview of Using Controls in Windows Forms

This topic describes the essential elements of a Windows Forms application and provides a simple example that uses controls and handles events in a Windows Forms application.

At a minimum, a Windows Forms application consists of the following elements:

  • One or more classes that derive from System.Windows.Forms.Form.

  • A Main method that invokes the static (shared in Visual Basic) Run method and passes a Form instance to it. The Run method processes messages from the operating system to the application.

The following code example shows the essential elements of a Windows Forms application.

using System;
using System.Windows.Forms;

public class MyForm : Form {

   public MyForm() {
      this.Text = "Hello World";
   public static void Main(string[] args) {
     MyForm aform = new MyForm();
// The Application.Run method processes messages from the operating system 
// to your application. If you comment out the next line of code, 
// your application will compile and execute, but because it is not in the // message loop, it will exit after an instance of the form is created.

The following code example shows a simple application that illustrates how Windows Forms applications use controls and handle events. The example consists of three buttons on a form; each button changes the background color when clicked.

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Resources;
using System.Drawing;

public class MyForm : Form {
   private Button red;
   private Button blue;
   private Button green;

   public MyForm() : base() {   

   protected override void Dispose(bool disposing) {
// InitializeComponent is a helper method for the constructor. 
// It is included for consistency with code that is 
// auto-generated by the Windows Forms designer in Visual Studio. 
   private void InitializeComponent() {
// A delegate for the click event of a button. The argument to 
// the constructor contains a reference to the method that performs the 
// event handling logic.
      EventHandler handler = new EventHandler(button_Click);
// Creates three buttons, sets their properties, and attaches
// an event handler to each button.

      red = new Button();
      red.Text = "Red";
      red.Location = new Point(100, 50);
      red.Size = new Size(50, 50);
      red.Click +=handler;
      blue = new Button();
      blue.Text = "Blue";
      blue.Location = new Point(100, 100);
      blue.Size = new Size(50, 50);
      blue.Click += handler;
      green = new Button();
      green.Text = "Green";
      green.Location = new Point(100, 150);
      green.Size = new Size(50, 50);
      green.Click += handler;
   // Event handler.
   private void button_Click(object sender, EventArgs e) {
            if (sender == red) this.BackColor = Color.Red ;
                  else if (sender == blue) this.BackColor = Color.Blue;
                  else this.BackColor = Color.Green;
   // The STAThreadAttribute informs the common language runtime that
   // Windows Forms uses the single-threaded apartment model.
   public static void Main(string[] args) {
   Application.Run(new MyForm());

Community Additions