Home

Windows Control: Text Box

 

Introduction to Text Boxes

 

Introduction

A text box is a Windows control used to get or display text to the user. At its most regular use, a text box serves as a placeholder to fill out and provide information. Such a use is common on employment applications, login dialog boxes, forms, etc. Like most other controls, the role of a text box is not obvious at first glance; that is why it should be accompanied by a label that defines its purpose.

From the user’s standpoint, a text box is named after the label closest to it. Such a label is usually positioned to the left or the top side of the text box. From the programmer’s point of view, a text box is a placeholder used for various things. For example, you can show or hide it as you see fit. You can also use it only to display text without allowing the user to change it.

 

Practical LearningPractical Learning: Creating Text Boxes

  1. To start a new application, on the main menu, click File -> New -> Project (or File -> New Project)
  2. In the middle list, click Windows Application and set the name to PayrollProcessing1
  3. Click OK

Creating a Text Box

To create a text box, from the Common Controls section of the Toolbox, you can click TextBox Text Box and click the form. The text box is based on the TextBox class. This means that you can use this class to dynamically create a text box and add it to your application. The text box control is based on the TextBox class whose immediate parent is TextBoxBase. Like every .NET Framework class, it has a constructor that can be used to dynamically create the control.

Here is an example:

Imports System.Drawing
Imports System.Windows.Forms

Module Exercise

    Public Class Starter
        Inherits Form

        Private txtNotes As TextBox

        Dim components As System.ComponentModel.Container

        Public Sub New()
            InitializeComponent()
        End Sub

        Public Sub InitializeComponent()

            txtNotes = New TextBox
            txtNotes.Location = New Point(10, 10)
            Controls.Add(txtNotes)

        End Sub

    End Class

    Function Main() As Integer

        Dim frmStart As Starter = New Starter

        Application.Run(frmStart)

        Return 0
    End Function

End Module

The TextBoxBase class provides other methods derived from the control’s parent or from ancestor classes.

Practical LearningPractical Learning: Creating Text Boxes

  1. To start a new application, on the main menu, click File -> New -> Project (or File -> New Project)
  2. In the middle list, click Windows Application and set the name to PayrollProcessing1
  3. Click OK
  4. Design the form as follows:
     
    Payroll Processing
    Control Name Text Other Properties
    GroupBox Group Box   Employee Identification  
    Label Label   &Employee Name:  
    TextBox TextBox TxtEmployeeName    
    Label Label   Hourly &Salary:  
    TextBox TextBox TxtHourlySalary    
    GroupBox GroupBox   Time Values  
    Label Label   Monday  
    Label Label   Tuesday  
    Label Label   Wednesday  
    Label Label   Thursday  
    Label Label   Friday  
    Label Label   Saturday  
    Label Label   Sunday  
    Label Label   First Week:  
    TextBox TextBox TxtWeek1Monday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Tuesday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Wednesday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Thursday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Friday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Saturday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek1Sunday 0.00 TextAlign: Right
    Label Label   Second Week:  
    TextBox TextBox TxtWeek2Monday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Tuesday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Wednesday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Thursday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Friday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Saturday 0.00 TextAlign: Right
    TextBox TextBox TxtWeek2Sunday 0.00 TextAlign: Right
    GroupBox GroupBox   Payroll Processing  
    Label Label   Hours  
    Label Label   Amount  
    Label Label LblCalculate Calculate  
    Label Label   Regular  
    TextBox TextBox TxtRegularTime 0.00 TextAlign: Right
    TextBox TextBox TxtRegularAmount 0.00 TextAlign: Right
    Label Label   Net Pay:  
    TextBox TextBox TxtNetPay 0.00 TextAlign: Right
    Label Label   Overtime  
    TextBox TextBox TxtOvertime 0.00 TextAlign: Right
    TextBox TextBox TxtOvertimeAmount 0.00 TextAlign: Right
    Label Label LblClose    
 

Using the Text of a Text Box

 

Introduction

As a control primarily meant to display text, like a label, the text box shares many of the characteristics of a label: text alignment, font, color, etc.

The most important aspect of a text box is its text, whether it is displaying or requesting it. This is the Text property. When you add a text box control to a form or other container, by default, it is left empty. If you want the control to display some text when the form launches, type a string in the Text property field in the Properties window.

After creating a text box, it may be empty, the user can start typing in it to fill it with text. You can programmatically assign it a string to occupy it. Another way you can put or add text to the control is to paste the content of the clipboard, using text from another control. The syntax of the Paste() method is:

Public Sub Paste

At any time, to know the length of the text in the control, you can retrieve the value of the TextLength property, which is of type int.

Selecting Text

The selection of text from a text box control can be performed either by you or by a user. To select part of the text, you can specify the starting point using the SelectionStart property, which is of type int. After the starting position, you can specify the number of characters to include in the selection. This is done using the SelectionLength property, which is of type int. The SelectionStart and the SelectionLength properties allow you to programmatically select text. The user, on the other hand, also knows how to select part of the text of the control. These operations can also be performed using the Select() method of the TextBox class. Its syntax is:

Public Sub Select(start As Integer, length As Integer)

Alternatively, the user may want to select the whole content of the control. To programmatically select the whole text of a text box control, call the SelectAll() method. Its syntax is:

Public Sub SelectAll

When  some text has been selected in the control, to get that text, you can retrieve the value of the SelectedText property, which is a handle to String.

Operations on Text

After the text, in part or in whole, has been selected, you or the user can manipulate it. For example, you can copy the selection to the clipboard. This is done using the Copy() method. Its syntax is:

Public Sub Copy

To delete part of the text, the user can cut it. You can programmatically do this using the Cut() method. Its syntax is:

Public Sub Cut

To delete the whole contents of the text box, you can call the Clear() method. Its syntax is:

Public Sub Clear

Any operation performed on the text box can be undone using the Undo() method whose syntax is:

Public Sub Undo

To prevent an undo operation, call the ClearUndo() method. Its syntax is:

Public Sub ClearUndo

Characteristics of Text Boxes

 

Mnemonics

As mentioned already, a text box should be accompanied by a label that indicates what it is used for. To support this relationship, the Label control provides various properties. An accelerator character is a symbol of the label that provides easy access to its text box. On the label, such a character is underlined. An example would be First Name. The idea is that, if the user presses the Alt key in combination with the label’s underlined character, the text box it accompanies would receive focus.

To create an accelerator key, choose one of the label’s characters and precede it with an ampersand character when setting its caption. An example would be &First Name. If you want a label to display the accelerator character instead of a plain ampersand, set the label’s UseMnemonic property to true, which is already its default value. If you set it to true but need to display an ampersand, type two & characters where the ampersand would be shown.

The UseMnemonic property of a label is only used to indicate that the label would display an accelerator character and the & symbol typed on the label creates that accelerator character. To indicate which text box would receive focus when the accelerator character of the label is invoked, you must make sure you establish an appropriate tab sequence using the Tab Order menu item from the main menu or using the combination of TabStop/TabIndex properties. Typically, the label should have a Tab Order or TabIndex value that is just - 1 of that of the control it serves.

 

The Read-Only Attribute

By default, a newly created text box is used to both display and receive text from the user. If you want the user to read text without being able to change it, set the ReadOnly Boolean property to True. Its default value is false.

Practical LearningPractical Learning: Setting the Read-Only Attribute

  1. On the form, click the text box at the intersection of Time and Regular
  2. In the Properties window, double-click ReadOnly to change its value to True
  3. Do the same for the following text boxes: TxtRegularAmount, TxtNetPay, TxtOvertime, and TxtOvertimeAmount

Auto-Completing a Text Box

If a text box allows the user to enter text in it, the user can click the control and start typing. If a certain text box usually receives some known or common strings, you can assist the user with completing the entry. The TextBox class supports this with three properties.

If you want to assist the user with completing the string entered in a text box, first specify where the necessary strings will come from. You have two options. You can use the AutoCompleteSource property, that is based on the AutoCompleteSource enumeration. Its members are: None, RecentlyUsedList, FileSystem, FileSystemDirectories, HistoryList, ListItems, AllSystemSources, AllUrl, and CustomSource.

If you want to specify your own-created list of items, use the AutoCompleteCustomSource property. At design time, to create a list of strings, access the Properties window for the text box. In the Properties window, click the ellipsis button of the AutoCompleteCustomSource field to open the String Collection Editor. Enter the strings separated by a hard Return, and click OK.

After specifying the source of the list that will assist the user to complete the entry of the text box, set it AutoCompleteMode property. This property is based on the AutoCompleteMode enumeration that has four members. None is the default value.

Practical LearningPractical Learning: Auto-Completing a Text Box

  1. On the form, click the TxtEmployeeName text box
  2. In the Properties window, click AutoCompleteCustomSource and click its ellipsis button
  3. In the String Collection Editor, enter the following names:
    Micheline Hammond
    Paul Bertrand Yamaguchi
    Gertrude Monay
    Ernestine Ngaleu
    Andy Barang
    Christophe Yuen
    Jean Michel Kankan
  4. Click OK
  5. Click AutoCompleteSource, then click the arrow of its combo box and select CustomSource
  6. Click AutoCompleteMode, then click the arrow of its combo box and select SuggestAppend
  7. Right-click the form and click View Code
  8. In the Class Name combo box, select LblCalculate
  9. In the Method Name combo box, select Click and implement its event as follows:
    Private Sub LblCalculateClick(ByVal sender As System.Object,
                         ByVal e As System.EventArgs) Handles btnCalculate.Click
            Dim Monday1 As Double, Tuesday1 As Double
            Dim Wednesday1 As Double, Thursday1 As Double
            Dim Friday1 As Double, Saturday1 As Double, Sunday1 As Double
            Dim Monday2 As Double, Tuesday2 As Double
            Dim Wednesday2 As Double, Thursday2 As Double
            Dim Friday2 As Double, Saturday2 As Double
            Dim Sunday2 As Double, TotalHoursWeek1 As Double
            Dim TotalHoursWeek2 As Double
    
            Dim regHours1 As Double, regHours2 As Double
            Dim ovtHours1 As Double, ovtHours2 As Double
            Dim regAmount1 As Double, regAmount2 As Double
            Dim ovtAmount1 As Double, ovtAmount2 As Double
            Dim RegularHours As Double, OvertimeHours As Double
            Dim RegularAmount As Double, OvertimeAmount As Double
            Dim TotalEarnings As Double, HourlySalary As Double
    
            ' Retrieve the hourly salary
            HourlySalary = CDbl(txtHourlySalary.Text)
            ' Retrieve the value of each day worked
            Monday1 = CDbl(TxtWeek1Monday.Text)
            Tuesday1 = CDbl(TxtWeek1Tuesday.Text)
            Wednesday1 = CDbl(TxtWeek1Wednesday.Text)
            Thursday1 = CDbl(TxtWeek1Thursday.Text)
            Friday1 = CDbl(TxtWeek1Friday.Text)
            Saturday1 = CDbl(TxtWeek1Saturday.Text)
            Sunday1 = CDbl(TxtWeek1Sunday.Text)
    
            Monday2 = CDbl(TxtWeek2Monday.Text)
            Tuesday2 = CDbl(TxtWeek2Tuesday.Text)
            Wednesday2 = CDbl(TxtWeek2Wednesday.Text)
            Thursday2 = CDbl(TxtWeek2Thursday.Text)
            Friday2 = CDbl(TxtWeek2Friday.Text)
            Saturday2 = CDbl(TxtWeek2Saturday.Text)
            Sunday2 = CDbl(TxtWeek2Sunday.Text)
    
            ' Calculate the total number of hours for each week
            TotalHoursWeek1 = Monday1 + Tuesday1 + Wednesday1 + 
                              Thursday1 + Friday1 + Saturday1 + Sunday1
            TotalHoursWeek2 = Monday2 + Tuesday2 + Wednesday2 + 
                              Thursday2 + Friday2 + Saturday2 + Sunday2
    
            ' The overtime is paid time and half
            Dim ovtSalary As Double = HourlySalary * 1.5
    
            ' If the employee worked under 40 hours, there is no overtime
            If TotalHoursWeek1 < 40 Then
                regHours1 = TotalHoursWeek1
                regAmount1 = HourlySalary * regHours1
                ovtHours1 = 0.0
                ovtAmount1 = 0.0
                ' If the employee worked over 40 hours, calculate the overtime
            ElseIf TotalHoursWeek1 >= 4 Then
                regHours1 = 40
                regAmount1 = HourlySalary * 40
                ovtHours1 = TotalHoursWeek1 - 40
                ovtAmount1 = ovtHours1 * ovtSalary
            End If
    
            If TotalHoursWeek2 < 40 Then
                regHours2 = TotalHoursWeek2
                regAmount2 = HourlySalary * regHours2
                ovtHours2 = 0.0
                ovtAmount2 = 0.0
            ElseIf TotalHoursWeek2 >= 40 Then
                regHours2 = 40
                regAmount2 = HourlySalary * 40
                ovtHours2 = TotalHoursWeek2 - 40
                ovtAmount2 = ovtHours2 * ovtSalary
            End If
    
            RegularHours = regHours1 + regHours2
            OvertimeHours = ovtHours1 + ovtHours2
            RegularAmount = regAmount1 + regAmount2
            OvertimeAmount = ovtAmount1 + ovtAmount2
            TotalEarnings = RegularAmount + OvertimeAmount
    
            txtRegularTime.Text = RegularHours.ToString("F")
            txtOvertime.Text = OvertimeHours.ToString("F")
            txtRegularAmount.Text = RegularAmount.ToString("F")
            txtOvertimeAmount.Text = OvertimeAmount.ToString("F")
    
            txtNetPay.Text = TotalEarnings.ToString("F")
    End Sub
  10. In the left combo box of the Code Editor, select LblClose
  11. In the right combo box, select Click
  12. Implement it as follows:
    Private Sub LblCloseClick(ByVal sender As Object,
                       ByVal e As System.EventArgs) Handles btnClose.Click
        Close()
    End Sub
  13. Execute the application to see the result
     
    Payroll Information
  14. Close the form and return to your programming environment

Character Casing

A text box can be configured to display only lowercase characters, only uppercase characters, or a mix. This characteristic is controlled by the CharacterCasing property, which is an enumerator that holds the same name. The default value of this property is Normal, which indicates that the control can use a mix of lowercase and uppercase characters. If you set this property to Lower, all existing characters, if any, in the control would be converted to lowercase and all future characters typed in the control would be automatically converted to lowercase. If you set this property to Upper, all existing characters, if any, in the control would be converted to uppercase and all future characters typed in the control would be automatically converted to uppercase.

Character Password

Text typed in a text box appears with its corresponding characters unless you changed the effect of the CharacterCasing property from its default Normal value. This allows the user to see, and be able to read, the characters of the control. If you prefer to make the characters un-readable, you have two options.

The operating system uses a default character it uses to hide the contents of a text box. If you want to use that character, set the UseSystemPasswordChar property to true. If you prefer to specify your own character, you can use the PasswordChar property. Although this property is a char type of data, changing it actually accomplishes two things:

  • If you type a character in its field in the Properties window, for example if you type *, any character typed in it would be un-readable
  • Any character in the control would be replaced by the value of this property. You can use any alphabetic character or digit to represent the characters that would be typed but you must provide only one character
 

Home Copyright © 2008-2016, FunctionX, Inc.