The Windows Forms framework is built upon an object-oriented type hierarchy. This advanced approach to graphical application development means that items such as your TextBox and Button are derived from a base class Control. You can act upon these items using the base Control class, as we see here.
This C# example program shows the Control type in Windows Forms.

To start, you can create a new Windows Forms application and add several TextBox and Button controls to the enclosing Form by dragging from the Toolbox. Next, add the Form1_Load event by double-clicking on the window itself.
Program that uses Control references [C#]
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Loop through each Control in ControlCollection.
foreach (Control control in base.Controls)
{
if (control is TextBox)
{
control.Text = "box";
}
else if (control is Button)
{
control.Text = "push";
}
}
}
}
}
Foreach Control. Let's look at the foreach-loop in the Form1_Load event handler. This loop acts upon the base.Controls collection, which is an instance of ControlCollection. You are accessing each TextBox and Button (among others) in this loop. However, the TextBox and Button instances are being accessed through a reference to their base class.
Cast. Next, you can use the 'is' and 'as' casts to determine the derived type of the Control reference. You can even mutate the properties of the Control instances by assigning their properties; this does not require any more type information.
Is Cast Example As Cast Example
You can also use the LINQ extensions to the C# language to use the Controls collection. The OfType extension can make searching for all Control instances of a certain derived type easier.
OfType Example Query Windows Forms ControlsThe Control type—and the base.Controls collection on each Form instance—lets you access all the items such as TextBox, Button and more in a unified way. This can improve the clarity of your C# code.
Windows Forms