Working with Controls Dynamically in Code
Each control in the Toolbox is a member of the Control class in the System.Windows.Forms namespace. Because each control in the Toolbox is a class, similar to a Window Forms class, you can dynamically create controls in code at runtime. Earlier you looked at the InitializeComponent method, which created the controls on the form. You can do the same type of dynamic code creation when writing applications. Doing so gives you flexibility in the user interface and enables you to create complete forms based on user settings that might be stored in a database or configuration file.To find out how to create controls dynamically at runtime, add the code in Listing 3.4 to the Form_Load event of firstForm.
Listing 3.4 Creating Controls Dynamically at Runtime
Private Sub firstForm_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Declare new instances of the RadioButton control class
Dim Rd1 As RadioButton = New RadioButton()
Dim Rd2 As RadioButton = New RadioButton()
Dim Rd3 As RadioButton = New RadioButton()
' Position the controls
Rd1.Location = New System.Drawing.Point(15, 90)
Rd2.Location = New System.Drawing.Point(15, 120)
Rd3.Location = New System.Drawing.Point(15, 150)
' Assign a text value for these controls
Rd1.Text = "Red"
Rd2.Text = "White"
Rd3.Text = "Blue"
' Add to the forms controls collection
Me.Controls.AddRange(New Control() {Rd1, Rd2, Rd3})
' Add event handlers for the controls
AddHandler Rd1.Click, AddressOf GenericClick
AddHandler Rd2.Click, AddressOf GenericClick
AddHandler Rd3.Click, AddressOf GenericClick
End Sub
Public Sub GenericClick(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
Select Case sender.text
Case "Red"
Me.BackColor = Color.Red
Case "White"
Me.BackColor = Color.White
Case "Blue"
Me.BackColor = Color.Blue
End Select
End Sub
private void firstForm_Load(object sender, System.EventArgs e)
{
// Declare new instances of the RadioButton control class
RadioButton rd1 = new RadioButton();
RadioButton rd2 = new RadioButton();
RadioButton rd3 = new RadioButton();
// Position the controls
rd1.Location = new System.Drawing.Point(15, 90);
rd2.Location = new System.Drawing.Point(15, 120);
rd2.Location = new System.Drawing.Point(15, 150);
// Assign a text value for these controls
rd1.Text = "Red";
rd2.Text = "White";
rd3.Text = "Blue";
// Add to the forms controls collection
this.Controls.AddRange(new Control[] {rd1, rd2, rd3});
// Add the generic event handler
rd1.Click += new System.EventHandler(genericClick);
rd2.Click += new System.EventHandler(genericClick);
rd3.Click += new System.EventHandler(genericClick);
}
private void genericClick(object sender, System.EventArgs e)
{
RadioButton rdb;
rdb = (RadioButton)sender;
this.BackColor = Color.FromName(rdb.Text);
}
After the code is in, press F5 to run the application. You'll see that the three RadioButton controls appear on your form. Just like any other object, declaring a new instance of a control gives you the properties, methods, and events for that control. In Visual Basic 6, you could dynamically create controls with the New keyword, and then set the Right, Left, and Top properties to position them, but you needed to set the Visible property to True for them to show up on the form. In .NET, you set the X and Y screen coordinates of the newly created controls, and then add the controls to the form's Controls collection with the AddRange method.The Day 8, "Core Language Concepts in Visual Basic .NET and C#," you learn about the language features of both Visual Basic .NET and C#, and you'll see the advantages of the Code Editor in more detail when you're using all the language features.
• Table of Contents
• Index
Sams Teach Yourself Visual Studio® .NET 2003 in 21 Days
By
Jason Beres
Publisher
: Sams Publishing
Pub Date
: January 14, 2003
ISBN
: 0-672-32421-0
Pages
: 696
Sams Teach Yourself Visual Studio .NET in 21 Days will help developers that are new to application development and experienced developers understand how to use the .NET Framework and Visual Studio .NET to rapidly develop any type of computer application. The Visual Studio .NET development environment is the most comprehensive developer tool ever created, putting that together with the .NET Frameworks' Class Libraries, the developer has everything he or she needs to get up-to-speed on Microsoft's latest revolution in application development. This book will guide the developer through using the VS .NET IDE, the Visual Basic .NET and C# language, and the supporting tools available from Microsoft to create Windows and Web-based applications. The market is full of books that pretty much say the same thing, which is already available in the help files, the author of this book has written and deployed over a dozen successful applications using Visual Studio .NET and the .NET Framework. All of his expertise and experience is used to give you the most comprehensive title on using Visual Studio .NET.