.NET Array Dictionary List String 2D Async DataTable Dates DateTime Enum File For Foreach Format IEnumerable If IndexOf Lambda LINQ Parse Path Process Property Regex Replace Sort Split Static StringBuilder Substring Switch Tuple


C#: .NET: Windows

Control. Windows Forms is built upon an object-oriented type hierarchy. This 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.

TextBoxButton

Example. 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.

C# program that uses Control references

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";
		}
	    }
	}
    }
}

Please 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.

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.

IsAs

LINQ. 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.

OfTypeQuery Windows Forms Controls

Summary. The 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.