Home

Windows Controls: The Label

 

Introduction to Labels

 

Description

A label is a control that serves as a guide to the user. It provides static text that the user cannot change but can read to get information on a form. The programmer can also use it to display simple information to the user. Most controls on the form are not explicit at first glance and the user may not know what they are used for. Therefore, you can assign a label to a control as a help to the user.

Creating a Label

To add a label to a container, click the Label button Label from the Toolbox and click the object that would host it.

To programmatically create a label, declare a handle to Label, initialize it using its default constructor, and add it to the Controls property of the form. Here is an example:

#include <windows.h>

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

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

public ref class CExercise : public Form
{
private:
    Label ^ lblMessage;

public:
    CExercise()
    {
	InitializeComponent();
    }

    void InitializeComponent()
    {
        lblMessage = gcnew Label;
        Controls->Add(lblMessage);
    }
};

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

    return 0;
}

Practical LearningPractical Learning: Introducing Labels

  1. Start Microsoft Visual C++
  2. Create a Window Forms Application named ElementaryAddition1
  3. From the Common Control section of the Toolbox, click Label and click the form
  4. From the Common Control section of the Toolbox, click the Label again and click the form
  5. From the Common Control section of the Toolbox, click the Label again and click the form

Characteristics of a Label

 

The Caption

The most important characteristic of a label control is the text it displays. That text is also referred to as its caption and this is what the user would read. The text of a label is its Text property and is its default. To set a label's caption, after adding the control to a container, click Text in the Properties window and type the desired value. As we mentioned when studying controls characteristics, at design time, the text you type in the Text field is considered "as is". If you want to create a more elaborate and formatted string, you would have to do it programmatically. Here is an example:

public ref class CExercise : public Form
{
private:
    Label ^ lblMessage;

public:
    CExercise()
    {
	InitializeComponent();
    }

    void InitializeComponent()
    {
        lblMessage = gcnew Label;
        lblMessage->Location = Point(20, 20);
	lblMessage->Text = DateTime::Now.ToString();
        Controls->Add(lblMessage);
    }
};

After specifying the caption of a label, by default, it is positioned to the left of its confined rectangle. You can change this alignment to the center or the right sides. To do this, you can specify the value of the TextAlign property.

When it comes to its caption, one of the most valuable characteristics of the text of a label is the variance of the font. When designing a caption. you can change the default font to make it more attractive.

Practical LearningPractical Learning: Captioning the Labels

  1. On the form, click the first label
  2. In the Properties window, click Text and type 00
  3. Click (Name) and type lblOperand1
  4. Click TextAlign and the arrow of its combo box to select MiddleCenter
  5. Click the + button of the Font field and change the characteristics as follows:
    Name: Tahoma
    Font Style: Bold
    Size:   48
  6. On the form, click the second label and, in the Properties window, change its characteristics as follows:
    Text: +
    TextAlign: MiddleCenter
    (Name): lblOPeration
    Font -> Name: Arial
    Font -> Font Style: Bold
    Font -> Size:   48
  7. On the form, click the third label and, in the Properties window, change its characteristics as follows:
    Text: 00
    TextAlign: MiddleCenter
    (Name): lblOperand2
    Font -> Name: Arial
    Font -> Font Style: Bold
    Font -> Size:   48

Automatically Sizing a Label

After adding a label to a form, by default, it receives a fixed size. If you type its caption and press Enter, the text you provided would be confined to the allocated dimensions of the control. If the text is too long, part of it may disappear. You can then resize the label to provide more area. Another solution is to automatically resize the label to accommodate the length of the string you typed. This is aspects is controlled by the Boolean AutoSize property. Its default value is False. If you set this property to True, at design time, a rectangular border appears around it. If you type a string in the Text field and press Enter, the control would be resized to show the whole string but using only the necessary space.

If you programmatically create a label, it assumes a default size. If you assign it a string that is too long for that default size, part of the string may appear on a subsequent line. If you want the whole string to appear on the same line, you can set the AutoSize to true. Here is an example:

public ref class CExercise : public Form
{
private:
    Label ^ lblMessage;

public:
    CExercise()
    {
	InitializeComponent();
    }

    void InitializeComponent()
    {
        lblMessage = gcnew Label;
        lblMessage->Location = Point(20, 20);
        lblMessage->Text = DateTime::Now.ToString();
        lblMessage->AutoSize = true;
        Controls->Add(lblMessage);
    }
};

Practical LearningPractical Learning: Using AutoSize

  1. Click an unoccupied area of the form and press Ctrl+A to select all three labels
  2. In the Properties window, double-click AutoSize to set the value to False

Content Alignment

After typing the caption of a label whose AutoSize property is set to False, you can resize its allocated space to your liking. This is because a string occupies a rectangular area. Here is an example:

Content Alignment

By default, the caption of a label is positioned starting on the middle-left side of its allocated rectangle. Alternatively, you can position it to one of the nine available positions. The position of the caption of a label is controlled by the TextAlign property which is based on the ContentAlignment enumerator:

Text Alignment

It can have the following values:

TopLeft TopCenter TopRight
TopLeft TopCenter TopRight
MiddleLeft MiddleCenter MiddleRight
MiddleLeft MiddleCenter MiddleRight
BottomLeft BottomCenter BottomRight
BottomLeft BottomCenter BottomRight
 
 
 

Pictures on a Label

Other fancy characteristics you can apply to a label include its font and color. For example, a label is primarily meant to display a string. To make it fancier, you can display a (small) picture next to it. To do this, at design time, use the Image field of the Properties window to select a picture. You can also specify the picture at run time by assigning an Image value to the Label::Image property. After adding a picture that would accompany the label, you can specify what position the picture would hold with regards to the label. To do this, select the desired position of the ImageAlign field in the Properties window.

Instead of using a picture from the Image property, you can create a list of images using an ImageList control and assign it to the label. In fact, the advantage of an ImageList is that, unlike the Image property, it allows you to use more than one picture.

After assigning an ImageList to the label control using the Properties window or code, you can use the ImageIndex to specify what picture to display next to the label.

A Label's Mnemonic

A label provides another property called UseMnemonic. This property is valuable only when the label accompanies another control.

Practical LearningPractical Learning: Using a Text Box

  1. Complete the design of the form as follows:
     
    Elementary Addition
    Control Text Name TextAlign Font Additional Properties
    Label 00 lblOperand1 Center Name: Tahoma
    Font Style: Bold
    Size:   48
    ForeColor: Blue
    Label +   Center Name: Arial
    Font Style: Bold
    Size:   48
    ForeColor: Maroon
    Label 00 lblOperand2 Center Name: Tahoma
    Font Style: Bold
    Size:   48
    ForeColor: Blue
    Label =   Center Name: Arial
    Font Style: Bold
    Size:   48
    ForeColor: Green
    Label 00 lblResult Center Name: Tahoma
    Font Style: Bold
    Size:   48
     
    Label New Operation lblNewOperation Center Name: Tahoma
    Font Style: Bold
    Size:   28
    BorderStyle: Fixed3D
    ForeColor: White
    BackColor:Maroon 
    Label Quit lblQuit Center Name: Tahoma
    Font Style: Bold
    Size:   28
    BorderStyle: FixedSingle
  2. To be able to use the Visual Basic library, on the main menu, click Project -> ElementaryAddition1 Properties...
  3. Click Add New Reference...
  4. In the .NET property page, click Microsoft.VisualBasic
     
    Add Reference
  5. Click OK
  6. Click OK
  7. Double-click New Operation and implement its event as follows:
    System::Void lblNewOperation_Click(System::Object^  sender,
    				 System::EventArgs^  e)
    {
        int operand1;
        int operand2;
    
        Random ^ rnd = gcnew Random;
    
        operand1 = rnd->Next(99);
        operand2 = rnd->Next(99);
        int result = operand1 + operand2;
    
        lblOperand1->Text = operand1.ToString();
        lblOperand2->Text = operand2.ToString();
        lblResult->Text   = L"0";
        String ^ strPrompt = String::Concat(lblOperand1->Text,
    			                L" + ",
    					lblOperand2->Text,
    					L" =");
    
        int answer =
    	 int::Parse(Microsoft::VisualBasic::Interaction::InputBox(
    					 strPrompt,
    					 L"Elementary Addition",
    					 L"000",
    					 100,
    					 100));
    
        lblResult->Text = answer.ToString();
    
        if( answer == result )
    	MessageBox::Show(L"WOW - Good Answer");
        else
    	MessageBox::Show(L"PSSST - Wrong Answer");
    }
  8. Return to the form and double-click Quit
  9. Implement its event as follows:
    System::Void lblQuit_Click(System::Object^  sender,
    			 System::EventArgs^  e)
    {
        Close();
    }
  10. Execute the application and test it
     
     
     
     
     
  11. Click the Close button to close the form and return to your programming environment
 
 
   
 

Home Copyright © 2004-2010 FunctionX, Inc.