 |
Introduction to Applications Controls |
|
|
Introduction to the Client Area
|
|
|
|
On a form, the client area is the body of the form
without the title bar, its borders and other sections we have not mentioned
yet such as the menu, scroll bars, etc:
|
Besides the form, every control also has a client area.
The role of the client area is to specify the bounding section where the
control can be accessed by other controls positioned on it. Based on this, a
control can be visible only within the client area of its parent. Not all
controls can be parent.
|
Introduction to Dynamic Control Creation
|
|
The objects used in a Windows application are defined in
various assemblies. To use one of these controls, you
must first know the name of its class. With this information, you can
declare a variable of its class. For example, a command button is an object
of type Button that is based on the Button class. The
Button class is defined in the System.Windows.Forms namespace of
the System.Windows.Forms.dll assembly. Based on this, to create a
button, you can declare a variable of type Button. Here is an example:
using System;
using System.Windows.Forms;
public class Exercise : Form
{
private Button btnSubmit;
public Exercise()
{
}
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
After declaring the variable, you can use the new
operator to allocate memory for it:
public class Exercise : Form
{
private Button btnSubmit;
public Exercise()
{
btnSubmit = new Button();
}
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
After declaring the variable and allocating memory for it, the
control is available but doesn't have a host, which makes it invisible. A
control must be positioned on a host like a form. The Form class
itself contains a member variable named Controls. This member holds a
list of the objects that are placed on the form. To specify that a control
you have instantiated must be positioned on a form, the Controls
member has a method named Add. Therefore, to make an object part of
the form, pass its variable to the Add() method.
|
Topic
Applied: Introducing Controls
|
|
- Start Notepad
- Type the following:
using System;
using System.Windows.Forms;
public class Exercise : Form
{
private Button btnSubmit;
public Exercise()
{
btnSubmit = new Button();
Controls.Add(btnSubmit);
}
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
- To save the file, on the main menu, click File -> Save
- Locate the Exercise1 folder from the root of the C: drive and display it in the top combo box
- Change the name of the file to "Introduction.cs"
- Click Save
- To launch the Command Prompt, click Start
- In the text box, type cmd and Press Enter
- To switch to the root directory, type CD\ and press
Enter
- To switch to the folder that contains the file, type CD Exercise1
and press Enter
- To build the project:
- Press Enter
- To execute, type Introduction and press Enter
- To close the form, click its system Close button

|
Initializing the Components
|
|
Because there can be many controls used in a program,
instead of using the constructor to initialize them, the Visual Studio
standards recommend that you create a method called InitializeComponent
to initialize the various objects used in your application. Then simply call
that method from the constructor of your form. This would be done as
follows:
using System;
using System.Windows.Forms;
public class Exercise : Form
{
private Button btnSubmit;
private void InitializeComponent()
{
btnSubmit = new Button();
Controls.Add(btnSubmit);
}
public Exercise()
{
InitializeComponent();
}
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
Notice that the control is created in the
InitializeComponent() method.
Starting in Microsoft Visual C# 2005, and probably
getting close to C++, you can use two files to create and use a form. Each
file would hold a partial definition of the class. As done in a header file
of a C++ application, the first file in C# would hold the variable or
control declarations. While in C++ a header file holds the same name (but
different extensions) as its corresponding source file, because C# does not
have the concepts of header and source file, in C#, each file must have a
different name. Here is a starting file:
using System;
using System.Windows.Forms;
public partial class Exercise
{
private Button btnSubmit;
}
Like the source file of a C++ application, the second
file that serves a class can then be used to define or implement the
methods.
|
Topic
Applied: Using a Partial Class
|
|
- On the main menu of Notepad, click File -> New
- Type the following:
using System;
using System.Windows.Forms;
public class Numeric : System.Windows.Forms.TextBox
{
public Numeric()
{
}
}
public partial class Exercise
{
private Numeric txtBox;
}
- To start a new file, on the main menu of Notepad, click File -> New
- When asked whether you want to save the file, lick Yes
- Make sure the Exercise1 folder from the root of the C: drive is displaying in the top combo box.
Change the name of the file to
"Exercise1.cs"
- Click Save
- In the empty document, type:
using System;
using System.Windows.Forms;
public partial class Exercise : Form
{
private void InitializeComponent()
{
txtBox = new Numeric();
Controls.Add(txtBox);
}
public Exercise()
{
InitializeComponent();
}
}
public class Program
{
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
- On the main menu of Notepad, click File -> Open...
- When asked whether you want to save, click Yes
- Set the name to "Exercise2.cs" and click Save
- Return to the Command Prompt
- To build the project:
- Press Enter
- To execute, type Exercise2 and press Enter
- To close the form, click its system Close button

|
Components Tracking on an Application
|
|
As you add components to an application, you
need a way to count them to keep track of what components and how many of
them your application is using. To assist you with this, the .NET Framework
provides a class called Container. This class is defined in the
ComponentModel namespace that is itself part of the System
namespace. To use a variable of this class in your application, declare a
variable of type Container. Because no other part of the application
is interested in this variable, you should declare it private. This can be
done as follows:
using System;
using System.Windows.Forms;
public partial class Exercise
{
private Button btnSubmit;
System.ComponentModel.Container components;
}
After this declaration, the compiler can keep track of
the components that are part of the form.
If you are using a .NET Framework control, you must know
the name of the class on which the control is based (and each control is
based on a particular class). If you have examined the types of classes
available but none implements the behavior you need, you can first locate
one that is close to the behavior you are looking for, then use it as a base
to derive a new class.
To derive a class from an existing control, you can use
your knowledge of class inheritance. Here is an example:
public class Numeric : System.Windows.Forms.TextBox
{
}
If you want to perform some early initialization to
customize your new control, you can create a constructor. Here is an
example:
public class Numeric : System.Windows.Forms.TextBox
{
public Numeric()
{
}
}
Besides the constructor, in your class, you can add the
fields and methods as you see fit. You can also use it to globally set a
value for a field of the parent class. Once the control is ready, you can
dynamically use it like any other control. Here is an example:
using System;
using System.Windows.Forms;
public class Numeric : System.Windows.Forms.TextBox
{
public Numeric()
{
}
}
public partial class Exercise
{
private Numeric txtBox;
System.ComponentModel.Container components;
}
|
using System;
using System.Windows.Forms;
public partial class Exercise : Form
{
private void InitializeComponent()
{
txtBox = new Numeric();
Controls.Add(txtBox);
}
public Exercise()
{
InitializeComponent();
}
}
public class Program
{
public static int Main()
{
Application.Run(new Exercise());
return 0;
}
}
|
|
Topic
Applied: Ending the Lesson
|
|
- To close the Command Prompt, get to it and type exit
- Press Enter
|
|