Home

Windows Controls: Check Boxes

 

Overview of Check Boxes

 

Description

A check box is a control that makes a statement true or false. To perform this validation, the control displays a small square box that the user can click. Here are examples:

The Options dialog box of Microsoft FrontPage

To start, the square box may be empty . If the user clicks it, a check mark appears in the square box . If the user clicks a check box that has a check mark in it, the check mark may be removed.

To let the user know what the check box control represents, the control is accompanied by a label that displays the statement. When the square box is empty , the statement is false. When the square box is filled with a check mark T, the statement is true.

ApplicationPractical Learning: Introducing Check Boxes

  1. Start Microsoft Visual Studio
  2. To create a new application, on the main menu, click File -> New Project
  3. In the middle list, click Windows Forms Application
  4. Change the Name to DaniloPizza1
  5. Click OK
  6. On the main menu, click View -> Other Windows -> Resource View.
    In the Resource View, expand everything. Right-click Icon -> Insert Icon
  7. Using the Erase tool Erase, wipe its interior to erase its content
  8. Use the Ellipse tool and the black color to draw an oval shape
     
  9. Fill Fill it up with a brown color (the color on the right side of the black)
  10. Click the red color
  11. Click the Airbrush tool
  12. Click the option button and select the Medium brush
     
    Medium Air Brush
  13. Randomly click different parts of the shape
     
  14. To give the appearance of a crust, use the Pencil tool , click the black color, right-click the brown color, and draw a dark border around the shape
  15. With still the black and the brown colors, randomly click and right-click different points in the shape:
     
  16. Click the white color. Right-click the yellow color. Randomly click and right-click a few times in the shape
  17. Click the brown color again and click the Line tool
  18. Randomly draw horizontal, vertical, and dialog lines in the shape
     
  19. Right-click a white section in the drawing area, position the mouse on Current Icon Image Types, and click 16x16, 16 Colors
  20. Design it as follows:
     
  21. Save the icon and close it
  22. Use the Icon field of the form in the Properties window to assign the pizza.ico icon to the form

Creating a Check Box

To support check boxes, the .NET Framework provides the CheckBox class. To add a check box to your application at design time, from the Common Controls section of the Toolbox, yon can click the CheckBox control and click the form or a container on the form. Unlike the radio button but like the regular command button, a check box can safely be positioned directly on a form.

To programmatically create a check box, declare a variable of type CheckBox, use the new operator to allocate memory for it, and add it to the Controls collection of its holder. Here is an example:

#include <windows.h>

#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

public ref class CExercise : public Form
{
private:
    CheckBox ^ chkValidate;

public:
    CExercise()
    {
	InitializeComponent();
    }

private:
    void InitializeComponent()
    {
        chkValidate = gcnew CheckBox;

        Controls->Add(chkValidate);
    }
};

[STAThread]
int APIENTRY WinMain(HINSTANCE hInstance,
		     HINSTANCE hPrevInstance,
		     LPSTR lpCmdLine,
		     int nCmdShow)
{
    Application::Run(gcnew CExercise);

    return 0;
}

Unlike the radio button that usually comes along with other radio buttons, a check box can appear by itself. Even when it comes in a group with others, the behavior of one check box is independent of the other check boxes, even if they belong to the same group.

ApplicationPractical Learning: Adding Check Boxes

  1. Design the form as follows:
     
    Danilo Pizza - Design
     
    Control Text Name Additional Properties
    GroupBox GroupBox Pizza Size    
    RadioButton RadioButton Small rdoSmall  
    TextBox TextBox 8.95 txtSmall AlignText: Right
    RadioButton RadioButton Medium rdoMedium Checked: True
    TextBox TextBox 10.75 txtMedium AlignText: Right
    RadioButton RadioButton Large rdoLarge  
    TextBox TextBox 12.95 txtLarge AlignText: Right
    GroupBox GroupBox Side Orders    
    Label Label Qty    
    Label Label Unit Price    
    Label Label Sub Total    
    Label Label Bread Sticks    
    TextBox TextBox 0 txtQtyBread AlignText: Right
    TextBox TextBox 3.25 txtPriceBread AlignText: Right
    TextBox TextBox 0.00 txtTotalBread AlignText: Right
    ReadOnly: True
    Label Label Buffalo Wings    
    TextBox TextBox 0 txtQtyWings AlignText: Right
    TextBox TextBox 2.15 txtPriceWings AlignText: Right
    TextBox TextBox 0.00 txtTotalWings AlignText: Right
    ReadOnly: True
    GroupBox GroupBox Toppings    
    CheckBox CheckBox Pepperoni chkPepperoni  
    CheckBox CheckBox Sausage chkSausage  
    CheckBox CheckBox Extra Cheese chkExtraCheese  
    CheckBox CheckBox Olives chkOlives  
    CheckBox CheckBox Onions chkOnions  
    Label Label Each Topping    
    TextBox TextBox 0.45 txtEachTopping AlignText: Right
    GroupBox GroupBox Drinks    
    Label Label Qty    
    Label Label Unit Price    
    Label Label Sub Total    
    Label Label Soda Can    
    TextBox TextBox 0 txtQtyCan AlignText: Right
    TextBox TextBox 1.45 txtPriceCan AlignText: Right
    TextBox TextBox 0.00 txtTotalCan AlignText: Right
    ReadOnly: True
    Label Label Soda 20 Oz.    
    TextBox TextBox 0 txtQtySoda20 AlignText: Right
    TextBox TextBox 1.45 txtPriceSoda20 AlignText: Right
    TextBox TextBox 0.00 txtTotalSoda20 AlignText: Right
    ReadOnly: True
    Label Label Soda 2L Bottle    
    TextBox TextBox 0 txtQtySoda2L AlignText: Right
    TextBox TextBox 1.45 txtPriceSoda2L AlignText: Right
    TextBox TextBox 0.00 txtTotalSoda2L AlignText: Right
    ReadOnly: True
    Label Label Orange Juice    
    TextBox TextBox 0 txtQtyOJ AlignText: Right
    TextBox TextBox 2.25 txtPriceOJ AlignText: Right
    TextBox TextBox 0.00 txtTotalOJ AlignText: Right
    ReadOnly: True
    Label Label Water    
    TextBox TextBox 0 txtQtyWater AlignText: Right
    TextBox TextBox 1.25 txtPriceWater AlignText: Right
    TextBox TextBox 0.00 txtTotalWater AlignText: Right
    ReadOnly: True
    Button Button Close btnClose  
    Label Label Total Price    
    TextBox TextBox 0.00 txtTotalPrice AlignRight: Right
    ReadOnly: True
  2. Save everything

Check Box Characteristics

 

Checking a Check Box

By default, a check box appears empty, which makes its statement false. To make the statement true, the user can click it. There are three main ways you can use this property of a check box. To select a check box, you can set its Checked property to True. You can also do it programmatically as follows:

void InitializeComponent()
{
    chkValidate = gcnew CheckBox;

    Controls->Add(chkValidate);

    chkValidate->Checked = true;
}

To find out if an item is selected, get the value of its Checked property. Another possibility consists of toggling the state of the check mark. For example, you can check or uncheck the check mark when the user clicks another button. To do this, you can simply negate the truthfulness of the control as follows:

chkValidate->Checked = !chkValidate->Checked;

Like the radio button, when a check box is clicked, the control fires a CheckedChanged event to let you know that it has been checked. This event is of type EventArgs. If the check box can display only two states, checked or unchecked, this event is enough.

ApplicationTopic Applied: Configuring Check Boxes

  1. On the form, click the Small radio button
  2. Press and hold Shift
  3. Click the Medium radio button, the Large radio button, the Pepperoni, the Sausage, the Extra Cheese, the Olives, and the Onions check boxes
  4. Release Shift
  5. In the Properties window, click the Events button Events
  6. In the Events section, double-click Click
  7. Return to the form
  8. Click the txtSmall text box
  9. Press and hold Shift
  10. Click each of the following controls: txtMedium, txtLarge, txtEachTopping, txtQtyBread, txtPriceBread, txtQtyWings, txtPriceWince, txtQtyCan, txtPriceCan, txtQtySoda20, txtPriceSoda20, txtQtySoda2L, txtPriceSoda2L, txtQtyOJ, txtPriceOJ, txtQtyWater, and txtPriceWater
  11. Release Shift
  12. In the Events section of the Properties window, double-click Leave
  13. In the Code Editor, define a member function named CalculatePrice() and implement the events as follows:
    void CalculatePrice()
    {
        double PriceSize = 0.00;
        double PriceEachTopping = 0.00, BWings, Bread,
    	   SodaCan, Soda20, Soda2L, OJ, Water, PriceToppings, TotalOrder;
        int Pepperoni, Sausage, ExtraCheese, Onions, Olives;
    	
        try {
            // Get the price of pizza depending on the selected size
            if( rdoSmall->Checked == true)
    			PriceSize = double::Parse(txtSmall->Text);
            if( rdoMedium->Checked == true)
    			PriceSize = double::Parse(txtMedium->Text);
            if( rdoLarge->Checked == true)
    			PriceSize = double::Parse(txtLarge->Text);
        }
        catch(FormatException ^)
        {
        MessageBox::Show("The value you typed for the price of a pizza is invalid"
    	                 "\nPlease try again", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    
        // Get the price of a topping if it was selected
        if( chkPepperoni->Checked == true)
    	Pepperoni = 1;
        else
    	Pepperoni = 0;
    	
        if( chkSausage->Checked == true)
    	Sausage = 1;
        else
    	Sausage = 0;
    	
        if( chkExtraCheese->Checked == true)
    	ExtraCheese = 1;
        else
    	ExtraCheese = 0;
    	
        if( chkOnions->Checked == true)
    	Onions = 1;
        else
    	Onions = 0;
    	
        if( chkOlives->Checked == true)
    	Olives = 1;
        else
    	Olives = 0;
    
        // Get the price of each topping
        try {
    	PriceEachTopping = double::Parse(txtEachTopping->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you typed for the price of a each topping is invalid"
                             "\nPlease try again", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        PriceToppings = (Pepperoni + Sausage + ExtraCheese + Onions + Olives) * PriceEachTopping;
    	
        // Calculate the price of the side dishes
        // depending on the quantity entered
        BWings = double::Parse(txtTotalWings->Text);
        Bread = double::Parse(txtTotalBread->Text);
    	
        // Calculate the price of the drink(s)
        SodaCan = double::Parse(txtTotalCan->Text);
        Soda20 = double::Parse(txtTotalSoda20->Text);
        Soda2L = double::Parse(txtTotalSoda2L->Text);
        OJ = double::Parse(txtTotalOJ->Text);
        Water = double::Parse(txtTotalWater->Text);
    	
        TotalOrder = PriceSize + PriceToppings + BWings + Bread +
    	         SodaCan + Soda20 + Soda2L + OJ + Water;
        txtTotalOrder->Text = TotalOrder.ToString("F");
    }
    
    System::Void rdoSmall_Click(System::Object^  sender, System::EventArgs^  e)
    {
        CalculatePrice();
    }
    
    System::Void txtSmall_Leave(System::Object^  sender, System::EventArgs^  e)
    {
        int QtyBread = 0, QtyWings = 0, QtyCan = 0,
        QtySoda20 = 0, QtySoda2L = 0, QtyOJ = 0, QtyWater = 0;
        double PriceBread = 0.00, TotalBread = 0.00,
               PriceWings = 0.00, TotalWings = 0.00,
               PriceCan = 0.00, TotalCan = 0.00,
               PriceSoda20 = 0.00, TotalSoda20 = 0.00,
               PriceSoda2L = 0.00, TotalSoda2L = 0.00,
               PriceOJ = 0.00, TotalOJ = 0.00,
               PriceWater = 0.00, TotalWater = 0.00;
    
        // Retrieve the quantity set in the text box
        try {
    	QtyBread = int::Parse(txtQtyBread->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of bread sticks is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        // Get the unit price of the item
        try {
    	PriceBread = double::Parse(txtPriceBread->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of bread sticks is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        // Calculate the sub-total of this item
        TotalBread = QtyBread * PriceBread;
        // Display the sub-total in the corresponding text box
        txtTotalBread->Text = TotalBread.ToString("F");
    	
        try {
    	PriceWings = int::Parse(txtQtyWings->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of orders of buffalo wings is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
        
        try {
    	PriceWings = double::Parse(txtPriceWings->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of buffalo wings is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        TotalWings = QtyWings * PriceWings;
        txtTotalWings->Text = TotalWings.ToString("F");
    	
        try {
    	QtyCan = int::Parse(txtQtyCan->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of soda cans is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
        
        try {
    	PriceCan = double::Parse(txtPriceCan->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of soda cans is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        TotalCan = QtyCan * PriceCan;
        txtTotalCan->Text = TotalCan.ToString("F");
    	
        try {
    	QtySoda20 = int::Parse(txtQtySoda20->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of soda 20 Oz. is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
                
        try {
    	PriceSoda20 = double::Parse(txtPriceSoda20->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of soda 20 Oz. is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    
        TotalSoda20 = QtySoda20 * PriceSoda20;
        txtTotalSoda20->Text = TotalSoda20.ToString("F");
        
        try {
    	QtySoda2L = int::Parse(txtQtySoda2L->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of bottles of soda 2-litter is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    
        try {
    	PriceSoda2L = double::Parse(txtPriceSoda2L->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of a bottle of soda is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        TotalSoda2L = QtySoda2L * PriceSoda2L;
        txtTotalSoda2L->Text = TotalSoda2L.ToString("F");
    	
        try {
    	QtyOJ = int::Parse(txtQtyOJ->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of a bottle of orange juice is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        try {
    	PriceOJ = double::Parse(txtPriceOJ->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of bottles of orange is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        TotalOJ = QtyOJ * PriceOJ;
        txtTotalOJ->Text = TotalOJ.ToString("F");
    	
        try {
    	QtyWater = int::Parse(txtQtyWater->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the quantify of bottles of water is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
         
        try {
    	PriceWater = double::Parse(txtPriceWater->Text);
        }
        catch(FormatException ^)
        {
    	MessageBox::Show("The value you entered for the price of bottle of water is not valid"
                             "\nPlease try again!", "Danilo Pizza",
                             MessageBoxButtons::OK, MessageBoxIcon::Information);
        }
    	
        TotalWater = QtyWater * PriceWater;
        txtTotalWater->Text = TotalWater.ToString("F");
    	
        CalculatePrice();
    }
  14. Return to the and double-click the Close button
  15. Implement its Click event as follows:
    System::Void btnClose_Click(Object ^ sender, System.EventArgs ^ e)
    {
    	Close();
    }
  16. Execute the application and test the form. Here is an example:
     
    Danilo Pizza - Results
  17. Close the form and return to your programming environment
 
 
 

The Alignment of a Check Box

By default, the square box of a check control is positioned to the left side of its accompanying label. Instead of this default left position, you can change as you wish. The position of the round box with regards to its label is controlled by the CheckAlign property that of type ContentAlignment. To programmatically set the check alignment of a check box, you can call the ContentAlignment enumeration and select the desired value. Here is an example:

void InitializeComponent()
{
    chkValidate = gcnew CheckBox;

    Controls->Add(chkValidate);
    chkValidate->Checked = true;
    
    chkValidate->CheckAlign = ContentAlignment::MiddleRight;
}

The Checked State of a Check Box

Instead of being definitely checked, you can let the user know that the decision of making the statement true or false is not complete. This means that a check box can display as "half-checked". In this case the check mark would appear as if it were disabled. This behavior is controlled through the CheckState property. To provide this functionality, assign the Indeterminate value to its CheckState property. You can do this programmatically as follows:

chkValidate->CheckState = CheckState::Indeterminate;

Indeterminate check box

The CheckState property only allows setting the check box control as "undecided". If you actually want the user to control three states of the control as checked, half-checked, or unchecked, use the ThreeState property.

By setting the CheckState Boolean property to true, the user can click it two to three times to get the desired value. When this ability is given to the user, you can use or check the value of the Indeterminate property to find out whether the control is checked, half-checked, or unchecked.

Here is an example of specifying the check box control as being able to display one of three states:

void InitializeComponent()
{
    chkValidate = gcnew CheckBox;

    Controls->Add(chkValidate);
    chkValidate->Checked = true;

    chkValidate->ThreeState = true;
}

If a check box is configured to assume one of three states when it's clicked, that is, if the ThreeState property of a check button is set to True, when the user clicks such a button, the button acquires one of the available three states, which are Checked, Unchecked, or Indeterminate. This causes the control to fire a CheckStateChanged event. This event also is of type EventArgs. This means that it does not let you know the current state of the button. You would have to find it out yourself, which is easily done by getting the value of the CheckState property.

The Appearance of a Check Box

By default, a check box appears as a square box that gets a check mark when the user clicks it. Optionally, you can make a check box appear as a toggle button. In that case, the button would appear as a regular button. When the user clicks it, it appears down. If the user clicks it again, it becomes up.

To change the appearance of a check box, assign the Button or Normal value to its Appearance property. The Appearance values are defined in the Appearance enumeration. You can also do this programmatically as follows:

void InitializeComponent()
{
    chkValidate = gcnew CheckBox;

    Controls->Add(chkValidate);
    chkValidate->Checked = true;
    chkValidate->ThreeState = true;

    chkValidate->Appearance = Appearance::Button;
}

Like the radio button, the check box control fires an AppearanceChanged event when the button's appearance changes from Normal to Button or vice-versa.

ApplicationPractical Learning: Using the Appearance of a Check Box

  1. To start a new application, on the main menu, click File -> New Project...
  2. In the middle list, click Windows Application and set the name to Logic1
  3. Click OK
  4. Design the form as follows:
     
    Control Text Name Font FlatStyle Appearance
    Label A   Microsoft Sans Serif, 24pt    
    Label B   Microsoft Sans Serif, 24pt    
    Label A ^ B lblOperation Microsoft Sans Serif, 24pt    
    CheckBox False chkOperand1 Microsoft Sans Serif, 18pt System Button
    CheckBox False chkOperand2 Microsoft Sans Serif, 18pt System Button
    CheckBox False chkResult Microsoft Sans Serif, 18pt System Button
    Button New Operation btnNewOperation Microsoft Sans Serif, 15.75pt    
    Button Check btnCheckOperation Microsoft Sans Serif, 18pt    
    Button Close btnClose Microsoft Sans Serif, 15.75pt    
  5. Double-click the top-left check box and implement its event as follows:
    System::Void chkOperand1_CheckedChanged(Object ^ sender, EventArgs ^ e)
    {
            if( chkOperand1->Checked == true)
                    chkOperand1->Text = "True";
            else
                    chkOperand1->Text = "False";
    }
  6. Return to the form
  7. Double-click the top-center check box and implement its event as follows:
    System::Void chkOperand2_CheckedChanged(Object ^ sender, EventArgs ^ e)
    {
            if( chkOperand2->Checked == true)
                    chkOperand2->Text = "True";
            else
                    chkOperand2->Text = "False";
    }
  8. Return to the form
  9. Double-click the top-right check box and implement its event as follows:
    System::Void chkResult_CheckedChanged(Object ^ sender, EventArgs ^ e)
    {
            if( chkResult->Checked == true)
                    chkResult->Text = "True";
            else
                    chkResult->Text = "False";
    }
  10. Return to the form
  11. Double-click the New Operation button and implement its event as follows:
    System::Void btnNewOperation_Click(Object ^ sender, EventArgs ^ e)
    {
            array<String ^> ^  strBooleanValues = { "True", "False" };
            array<String ^> ^  strOperations = { "A ^ B", "A V B" };
            Random ^ rnd = new Random();
    
            chkOperand1->Text = strBooleanValues[rnd.Next(2)];
            chkOperand2->Text = strBooleanValues[rnd.Next(2)];
    
            if( chkOperand1->Text == "True")
                    chkOperand1->Checked = true;
            else
                    chkOperand1->Checked = false;
    
            if( chkOperand2->Text == "True")
                    chkOperand2->Checked = true;
            else
                    chkOperand2->Checked = false;
    
            lblOperation->Text = strOperations[rnd.Next(2)];
    }
  12. Return to the form
  13. Double-click the Check button and implement its event as follows:
    System::Void btnCheckResult_Click(Object ^ sender, EventArgs ^ e)
    {
            // Logical Conjunction
            if( lblOperation->Text == "A ^ B")
            {
                    // If A = true
                    if( chkOperand1->Checked == true)
                    {
                        if( chkOperand2->Checked == true)
                        {
                            if( chkResult->Checked == true)
                            {
                                // | A | B | A ^ B |
                                // | T | T |   T   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else  if( chkResult->Checked == false)
                            {
                                // | A | B | A ^ B |
                                // | T | T |   F   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                        else if( chkOperand2->Checked == false)
                        {
                            if( chkResult->Checked == false)
                            {
                                // | A | B | A ^ B |
                                // | T | F |   F   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else  if( chkResult->Checked == true)
                            {
                                // | A | B | A ^ B |
                                // | T | F |   T   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                    }
                    else  if( chkOperand1->Checked == false )
                    {
                        if( chkOperand2->Checked == true)
                        {
                            if( chkResult->Checked == false)
                            {
                                // | A | B | A ^ B |
                                // | F | T |   F   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else  if( chkResult->Checked == true )
                            {
                                // | A | B | A ^ B |
                                // | F | T |   T   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                        else  if( chkOperand2->Checked == false)
                        {
                            if( chkResult->Checked == false)
                            {
                                // | A | B | A ^ B |
                                // | F | F |   F   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else  if( chkResult->Checked == true)
                            {
                                // | A | B | A ^ B |
                                // | F | F |   T   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                    }
                }
                else if( lblOperation->Text == "A V B") // Logical Disjunction:
                {
                    // If A = true
                    if( chkOperand1->Checked == true)
                    {
                        if( chkOperand2->Checked == true)
                        {
                            if( chkResult->Checked == true)
                            {
                                // | A | B | A V B |
                                // | T | T |   T   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else if( chkResult->Checked == false)
                            {
                                // | A | B | A V B |
                                // | T | T |   F   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                        else if( chkOperand2->Checked == false)
                        {
                            if( chkResult->Checked == true)
                            {
                                // | A | B | A V B |
                                // | T | F |   T   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else if( chkResult->Checked == false)
                            {
                                // | A | B | A V B |
                                // | T | F |   F   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                    }
                    else if( chkOperand1->Checked == false)
                    {
                        if( chkOperand2->Checked == true)
                        {
                            if( chkResult->Checked == true)
                            {
                                // | A | B | A V B |
                                // | F | T |   T   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else if( chkResult->Checked == false)
                            {
                                // | A | B | A V B |
                                // | F | T |   F   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                        else if( chkOperand2->Checked == false)
                        {
                            if( chkResult->Checked == false)
                            {
                                // | A | B | A V B |
                                // | F | F |   F   |
                                MessageBox::Show("Bravo - Good Answer");
                            }
                            else if( chkResult->Checked == true)
                            {
                                // | A | B | A V B |
                                // | F | F |   T   |
                                MessageBox::Show("Wrong - Get it right next time!");
                            }
                        }
                    }
            }
    }
  14. Return to the form
  15. Double-click the Close button and implement its event as follows:
    System::Void btnClose_Click(Object ^ sender, EventArgs ^ e)
    {
            Close();
    }
  16. Return to the form
 
 
   
 

Home Copyright © 2011 FunctionX, Inc. Home