![]() |
Button-Based Controls |
|
Introduction to Command Buttons |
|
Description |
|
On a typical application, a button is an object that the user clicks to perform an action. To make this obvious, a button is a control surrounded by thick borders. Here is an example of a button on a form:
Although a control is usually positioned on a form, there various other control containers that can hold a button. These include the toolbar or the status bar, and the other containers we have used so far. |
|
To indicate what it is used for, a button displays some text as its caption. A button can also display a picture instead. Another button can display both a string and a picture. When you create a button, you will decide what it should display and how it should behave.
To support the buttons of an application, the .NET Framework provides an abstract class named ButtonBase. The regular button of Microsoft Windows is implemented by the Button class. At design time, to add a button to your project, from the Common Controls section of the Toolbox, you can click the Button and click the form or another container. To programmatically create a button, you can declare a variable of type Button and use the new operator to allocate memory for it. Here is an example: Imports System.Drawing
Imports System.Windows.Forms
Module Exercise
Public Class Starter
Inherits Form
Private btnResume As Button
Dim components As System.ComponentModel.Container
Public Sub New()
InitializeComponent()
End Sub
Public Sub InitializeComponent()
btnResume = New Button()
Controls.Add(btnResume)
End Sub
End Class
Function Main() As Integer
Dim frmStart As Starter = New Starter
Application.Run(frmStart)
Return 0
End Function
End Module
For a user, the most important aspects of a button are the message it displays and the action it performs. The text the button displays allows the user to know what the button is used for. This is represented by the Text property. The most popular strings that the buttons display are OK and Cancel. The OK caption is set for a form or a dialog box that informs the user of an error, an intermediary situation, or an acknowledgement of an action that was performed on the dialog that hosts the button. The Cancel caption is useful on a button whose main parent (the form or the dialog box) would ask a question or request a follow-up action from the user. Whenever a dialog box allows the user to dismiss it without continuing the action, you should provide a button with a Cancel caption. After adding a button to a form (by design or with code), you can change its caption with code by assigning the desired string to the Text property. For example, you can change the caption of a button as follows: button1.Text = "Let it Go!"; After specifying the Text of a button, by default, it's positioned in the middle center of the button: The position of the text of a button is controlled through the TextAlign property which is a value of the ContentAlignment enumerator. The possible values are:
Here is an example: Public Sub InitializeComponent()
btnResume = New Button()
btnResume.Text = "Resume"
btnResume.Location = New Point(32, 20)
btnResume.Size = New System.Drawing.Size(120, 48)
btnResume.TextAlign = ContentAlignment.BottomCenter
Controls.Add(btnResume)
End Sub
Besides, or instead, of a caption, a button can display a picture on top. If you want a button to display a bitmap, you should first create, design, or have a picture. Then, in the Properties window, use the Image field to select a bitmap or an icon. You can also programmatically assign an Image object to the Image property. Here is an example: Public Sub InitializeComponent()
btnResume = New Button()
btnResume.Text = "Resume"
btnResume.Location = New Point(32, 20)
btnResume.Size = New System.Drawing.Size(120, 48)
btnResume.Image = Image.FromFile("E:\Programs\neutral.gif")
Controls.Add(btnResume)
End Sub
This would produce: ![]() By default, both the caption and the image display ion the middle-center of the button. To make them distinct and allow the user to see both, you can design a bitmap that has both and assign that bitmap as the image of the button. Alternatively, you can use a separate string and a separate picture. Fortunately, each can have its own alignment. We already saw how to control the alignment of the caption. Besides displaying an image, the Button class is equipped with the ImageAlign property that allows you to specify the alignment of the image. The ImageAlign property is inherited from the ButtonBase class. The ButtonBase.ImageAlign property is based on the ContentAlignment enumeration that we are already familiar with. Here is an example: Public Sub InitializeComponent()
btnResume = New Button()
btnResume.Text = "Resume"
btnResume.Location = New Point(32, 20)
btnResume.Size = New System.Drawing.Size(120, 48)
btnResume.TextAlign = ContentAlignment.BottomCenter
btnResume.Image = Image.FromFile("E:\Programs\neutral.gif")
btnResume.ImageAlign = ContentAlignment.TopCenter
Controls.Add(btnResume)
End Sub
This would produce: ![]() Instead of using the Image property, you can first create an image list and add some pictures to it. Then, using the ImageList property, assign it to the button. Use the ImageIndex property to specify what picture would be displayed on the button.
A regular button displays with raised borders as originally set by the operating system. To give your button a fancy look and behavior, you can use the FlatStyle property. The FlatStyle property is based on an enumeration of the same name. It provides 4 values that are:
Obviously the most important and the most intuitive event of a button occurs when clicked. This event is of type EventArgs, which indicates that it doesn't provide nor does it need any formal details about what is going on. To launch this event, you can double-click the button on the form. To create this event programmatically, first implement the method that would carry its assignment, then increment-add (with the += operator) it to the Click property of the button by assigning it the EventHandler constructor.
After the user has used a form or dialog box, to close it, the user would click a button. When the user does this, you must find out what button was clicked. Although there are various ways you can get this information, to assist you, the .NET Framework provides a convenient mechanism through an enumeration named DialogResult. When creating a form or a dialog box, after adding a button, in the Properties window, click DialogResult and select on the values:
Except for None, by default, it does not matter what value you select but, you should follow Windows standard to select the right value. After specifying the returned value of a button, access the properties of the form or dialog box:
After configuring the DialogResult of the button(s), when the user clicks one of the buttons to close the form or dialog box, you can get the value of the Form.ShowDialog() method which returns one of the values of the DialogResult enumeration.
A radio button, sometimes called an option button, is a circular control that comes in a group with other radio buttons. Each radio button is made of a small empty circle O. From the group, when the user clicks one of them, the radio button that was clicked becomes filled with a big dot 8. When one of the radio buttons in the group is selected and displays its dot, the others display empty circles. To guide the user as to what the radio buttons mean, each is accompanied by a label. Here is an example of a form with three radio buttons: Small, Medium, and Large
To create a radio button, on the Toolbox, you can
click the RadioButton control
Unlike most of other controls that can be positioned anywhere, a radio button should not be placed directly on a form. Instead, a radio button should be positioned in a container that belongs to a form. The typical container is the group box. When a radio button is added to a group box, the location of the radio button is relative to its parent. This location is easy to specify if you are visually designing the application. If you are programmatically creating it, make sure you specify the location based on the control that will hold the radio button. Here are examples: Imports System.Drawing
Imports System.Windows.Forms
Module Exercise
Public Class Starter
Inherits Form
Private radSmall As RadioButton
Private radMedium As RadioButton
Private radLarge As RadioButton
Private grpPizzaSize As GroupBox
Dim components As System.ComponentModel.Container
Public Sub New()
InitializeComponent()
End Sub
Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Size = New Size(160, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
End Sub
End Class
Function Main() As Integer
Dim frmStart As Starter = New Starter
Application.Run(frmStart)
Return 0
End Function
End Module
This would produce:
To indicate what a radio button represents, it is accompanied by text, also referred to as its caption. To specify the caption of a radio button at a design time, type a string in the Text field of its Properties window. To programmatically specify the caption of a radio button, assign a string to its Text property. Here are examples: Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Size = New Size(160, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Text = "Small"
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Text = "Medium"
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Text = "Large"
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
End Sub
This would produce:
The application we are going to create is used to calculate the amount owed on a loan using the following formula:
If you add only one radio button to a container, when the application starts, the lone radio button would appear with an empty round circle. If the user clicks that lone radio button, the radio button's circle becomes filled with a dot and the user cannot remove or change this aspect. If you equip a container with more than one radio button, the user can click the desired one to select it and only one of the radio buttons can be selected at a given time. The radio button that is selected is referred to as checked. To support this description, the RadioButton class is equipped with a property named Checked. At design time, to select a radio button, in the Properties window, set its Checked property to True. At run time, to programmatically select a radio button, assign a true value to its Checked property. To find out whether a particular radio button is selected, get the value of its Checked property. You can also programmatically check a radio button. Here is an example: Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Size = New Size(160, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Text = "Small"
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Text = "Medium"
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Text = "Large"
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
radMedium.Checked = True
End Sub
If the user clicks a radio button, since this control is primarily a button, the radio button that was clicked in the group fires a Click event. This is the most regularly used event of a radio button. Normally, when the user clicks a button in the group, the round box of that button becomes filled and the Click event is fired. If the user clicks a button that is already checked, nothing changes in the round box of that button but the Click event fires again. In some cases, you may want to execute code only if the checked state of a button has actually changed rather than being interested in whether the button was clicked or not. Fortunately, if you are interested only when the checked stated of a button is changed, you can use the CheckedChanged event. This event is fired whenever the checked state of a button is modified.
By default, the round box of a radio button is positioned to the left side of its accompanying label but you have many options. Besides the left position, you can position the round box to the top, the right, or the bottom etc side of its label. The position of the round box with regards to its label is controlled by the CheckAlign property which is a value of type ContentAlignment. To specify it at design time, access the Properties window of the radio button and select the desired value from the CheckAlign field. You can also change this property programmatically. Here are examples: Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Size = New Size(160, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Text = "Small"
radSmall.CheckAlign = ContentAlignment.TopCenter
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Text = "Medium"
radMedium.CheckAlign = ContentAlignment.TopCenter
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Text = "Large"
radLarge.CheckAlign = ContentAlignment.TopCenter
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
End Sub
Besides the alignment of the check box, you can also control the alignment of the text with regards to the bounding rectangle of the control. This characteristic is controlled by the TextAlign property of the RadioButton class. The TextAlign property also is of type ContentAlignment.
By default, a radio button appears as a rounded box that gets filled with a big dot when the user selects it. Optionally, you can make a radio button appear as a toggle button. Normally, if you make one radio button appear as a button, you should apply the same characteristics on the other radio buttons of the same group. The button would appear as a rectangular object. When the user clicks such a button, it appears down: ![]() If the user clicks another button, this button becomes up: ![]() To change the appearance of a radio button, assign the Button or Normal value to its Appearance property. The Appearance property is based on the Appearance enumeration. Here are examples: Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Text = "Pizza Size"
grpPizzaSize.Size = New Size(150, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Appearance = Appearance.Button
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Appearance = Appearance.Button
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Appearance = Appearance.Button
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
End Sub
This would produce:
As you can see, you can apply the Appearance property to a radio button that does not have a caption. You can also use a caption. If you do, make sure you align the caption to make is good to see. Here are examples: Public Sub InitializeComponent()
grpPizzaSize = New GroupBox()
grpPizzaSize.Text = "Pizza Size"
grpPizzaSize.Size = New Size(150, 120)
grpPizzaSize.Location = New Point(20, 10)
radSmall = New RadioButton()
radSmall.Text = "Small"
radSmall.Appearance = Appearance.Button
radSmall.TextAlign = ContentAlignment.MiddleCenter
radSmall.CheckAlign = ContentAlignment.MiddleCenter
radSmall.Location = New Point(20, 20)
radMedium = New RadioButton()
radMedium.Text = "Medium"
radMedium.Appearance = Appearance.Button
radMedium.TextAlign = ContentAlignment.MiddleCenter
radMedium.CheckAlign = ContentAlignment.MiddleCenter
radMedium.Location = New Point(20, 50)
radLarge = New RadioButton()
radLarge.Text = "Large"
radLarge.Appearance = Appearance.Button
radLarge.TextAlign = ContentAlignment.MiddleCenter
radLarge.CheckAlign = ContentAlignment.MiddleCenter
radLarge.Location = New Point(20, 80)
grpPizzaSize.Controls.Add(radSmall)
grpPizzaSize.Controls.Add(radMedium)
grpPizzaSize.Controls.Add(radLarge)
Controls.Add(grpPizzaSize)
End Sub
This would produce:
If you configure your application and give the user the ability to change the appearance of the radio button from a round circle to a rectangular object and vice-versa, and if the user decides to change this appearance, when this is done, the control whose appearance was changed fires an AppearanceChanged event. The AppearanceChanged event is of type EventArgs, meaning that it does not carry any significant information other than to let you know that the appearance of the button was changed.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||
| Previous | Copyright © 2008-2009, yevol.com | Next |
|
|
||