Home

Button-Based Controls: Radio Buttons

    

Introduction to Radio Buttons

 

Description

A radio button, sometimes called an option button, is a control with a small empty circle O. A radio button is usually used in a group with other radio buttons. 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

Radio Buttons

Creating Radio Buttons

To support radio buttons, the .NET Framework provides a class named RadioButton. Use it to create a radio button. Use the new operator to allocate memory for it and add it to the Controls property of its parent. Because radio buttons usually come as a group, you should include them in another control that visibly shows that the radio buttons belong together. The most common control used for this purpose is the group box created using the GroupBox class. You can al well use other controls containers such as the panel.

Characteristics of Radio Buttons

 

The Location of a Radio Button

Unlike most 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. Here are examples:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(160, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Location <- new Point(20, 20)

let rdoMedium = new RadioButton()
rdoMedium.Location <- new Point(20, 50)

let rdoLarge = new RadioButton()
rdoLarge.Location <- new Point(20, 80)

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

Application.Run exercise

This would produce:

Radio Buttons

Remember that a panel can also be used to host radio buttons. Here is an example:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width  <- 320
exercise.Height <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen

let pnlContainer = new Panel()
pnlContainer.Size <- new Size(160, 120)
pnlContainer.Location <- new Point(20, 10)
pnlContainer.BorderStyle <- BorderStyle.Fixed3D

let rdoSmall = new RadioButton()
rdoSmall.Location <- new Point(20, 20)

let rdoMedium = new RadioButton()
rdoMedium.Location <- new Point(20, 50)

let rdoLarge = new RadioButton()
rdoLarge.Location <- new Point(20, 80)

pnlContainer.Controls.Add rdoSmall
pnlContainer.Controls.Add rdoMedium
pnlContainer.Controls.Add rdoLarge

exercise.Controls.Add pnlContainer

Application.Run exercise

This would produce:

Radio Buttons

The Caption of a Radio Button

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:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen
exercise.Text <- "Pizza Size"

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(160, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Text <- "Small"
rdoSmall.Location <- new Point(20, 20)

let rdoMedium = new RadioButton()
rdoMedium.Text <- "Medium"
rdoMedium.Location <- new Point(20, 50)

let rdoLarge = new RadioButton()
rdoLarge.Text <- "Large"
rdoLarge.Location <- new Point(20, 80)

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

Application.Run exercise

This would produce:

 
   
 

Checking a Radio Button

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 want to change that behavior, you must write code). 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:

member Checked : bool with get, set

Here is an example:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen
exercise.Text <- "Pizza Size"

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(160, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Text <- "Small"
rdoSmall.Location <- new Point(20, 20)

let rdoMedium = new RadioButton()
rdoMedium.Text <- "Medium"
rdoMedium.Location <- new Point(20, 50)

let rdoLarge = new RadioButton()
rdoLarge.Text <- "Large"
rdoLarge.Location <- new Point(20, 80)

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

rdoMedium.Checked <- true

Application.Run exercise

To find out whether a particular radio button is selected, get the value of its Checked property.

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.

The Alignment of a Radio Button

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:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen
exercise.Text <- "Pizza Size"

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(160, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Text <- "Small"
rdoSmall.Location <- new Point(20, 20)
rdoSmall.CheckAlign <- ContentAlignment.TopCenter

let rdoMedium = new RadioButton()
rdoMedium.Text <- "Medium"
rdoMedium.Location <- new Point(20, 50)
rdoMedium.CheckAlign <- ContentAlignment.TopCenter

let rdoLarge = new RadioButton()
rdoLarge.Text <- "Large"
rdoLarge.Location <- new Point(20, 80)
rdoLarge.CheckAlign <- ContentAlignment.TopCenter

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

rdoMedium.Checked <- true

Application.Run exercise

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.

The Appearance of a Radio Button

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:

Pizza Order

If the user clicks another button, this button becomes up:

Pizza Order

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:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen
exercise.Text <- "Pizza Size"

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(160, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Text <- "Small"
rdoSmall.Location <- new Point(20, 20)
rdoSmall.Appearance <- Appearance.Button

let rdoMedium = new RadioButton()
rdoMedium.Text <- "Medium"
rdoMedium.Location <- new Point(20, 50)
rdoMedium.Appearance <- Appearance.Button

let rdoLarge = new RadioButton()
rdoLarge.Text <- "Large"
rdoLarge.Location <- new Point(20, 80)
rdoLarge.Appearance <- Appearance.Button

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

Application.Run exercise

This would produce:

Appearance of Radio Buttons

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:

open System
open System.Drawing
open System.Windows.Forms

let exercise : Form = new  System.Windows.Forms.Form()
exercise.Width    <- 320
exercise.Height   <- 210
exercise.StartPosition <- FormStartPosition.CenterScreen

let grpPizzaSize = new GroupBox()
grpPizzaSize.Size <- new Size(150, 120)
grpPizzaSize.Location <- new Point(20, 10)

let rdoSmall = new RadioButton()
rdoSmall.Text <- "Small"
rdoSmall.Appearance <- Appearance.Button
rdoSmall.TextAlign <- ContentAlignment.MiddleCenter
rdoSmall.CheckAlign <- ContentAlignment.MiddleCenter
rdoSmall.Location <- new Point(20, 20)

let rdoMedium = new RadioButton()
rdoMedium.Text <- "Medium"
rdoMedium.Appearance <- Appearance.Button
rdoMedium.TextAlign <- ContentAlignment.MiddleCenter
rdoMedium.CheckAlign <- ContentAlignment.MiddleCenter
rdoMedium.Location <- new Point(20, 50)

let rdoLarge = new RadioButton()
rdoLarge.Text <- "Large"
rdoLarge.Appearance <- Appearance.Button
rdoLarge.TextAlign <- ContentAlignment.MiddleCenter
rdoLarge.CheckAlign <- ContentAlignment.MiddleCenter
rdoLarge.Location <- new Point(20, 80)

grpPizzaSize.Controls.Add rdoSmall
grpPizzaSize.Controls.Add rdoMedium
grpPizzaSize.Controls.Add rdoLarge

exercise.Controls.Add grpPizzaSize

Application.Run exercise

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.

 
 
   
 

Home Copyright © 2015, FunctionX Home