Overview of using controls (Windows Forms .NET)

Windows Forms controls are reusable components that encapsulate user interface functionality and are used in client-side, Windows-based applications. Not only does Windows Forms provide many ready-to-use controls, it also provides the infrastructure for developing your own controls. You can combine existing controls, extend existing controls, or author your own custom controls. For more information, see Types of custom controls.


The Desktop Guide documentation for .NET 6 and .NET 5 (including .NET Core 3.1) is under construction.

Adding controls

Controls are added through the Visual Studio Designer. With the Designer, you can place, size, align, and move controls. Alternatively, controls can be added through code. For more information, see Add a control (Windows Forms).

Layout options

The position a control appears on a parent is determined by the value of the Location property relative to the top-left of the parent surface. The top-left position coordinate in the parent is (x0,y0). The size of the control is determined by the Size property and represents the width and height of the control.

Besides manual positioning and sizing, various container controls are provided that help with automatic placement of controls.

For more information, see Position and layout of controls and How to dock and anchor controls.

Control events

Controls provide a set of common events through the base class: Control. Not every control responds to every event. For example, the Label control doesn't respond to keyboard input, so the Control.PreviewKeyDown event isn't raised. Most shared events fall under these categories:

  • Mouse events
  • Keyboard events
  • Property changed events
  • Other events

For more information, see Control events and How to handle a control event.

Control accessibility

Windows Forms has accessibility support for screen readers and voice input utilities for verbal commands. However, you must design your UI with accessibility in mind. Windows Forms controls expose various properties to handle accessibility. For more information about these properties, see Providing Accessibility Information for Controls.

See also