Default Property Changes for Visual Basic 6.0 Users

Visual Basic 2008 updates default property support for simplification and improved readability.

Visual Basic 6.0

In Visual Basic 6.0, default properties are supported on objects. On a Label control, for example, Caption is the default property, and the two assignments in the following example are equivalent.

Dim lbl As Label 
lbl = "Important" 
lbl.Caption = "Important" 

While default properties enable a certain amount of shorthand in writing Visual Basic code, they have several drawbacks:

  • They can make code more difficult to read. In the preceding example, if you are not familiar with the Label control, you cannot tell from the first assignment whether the string "Important" is being stored directly in the variable lbl or in a default property.

  • Given an object that you plan to use in your code, it is not always easy to discover whether it has a default property, and if so, which property that is.

  • Default properties make the Set statement necessary in the Visual Basic language. The following example shows how Set is needed to indicate that an object reference, rather than a default property, is to be assigned.

    Dim lbl1 As Label, lbl2 As Label 
    lbl1 = "Saving" ' Assign a value to lbl1's Caption property. 
    lbl2 = lbl1       ' Replace lbl2's Caption property with lbl1's. 
    Set lbl2 = lbl1   ' Replace lbl2 with an object reference to lbl1. 
    

Visual Basic 2008

In Visual Basic 2008, default properties are not supported unless they take arguments. Because of this syntax change, the Let and Set statements are not needed to specify what is to be assigned, and they are not used in assignment statements. The Text property replaces the Caption property on the Label control, and the preceding example can be rewritten as follows.

Dim L1, L2 AsNew Label   ' Both become type Label
                          ' in the new version of Visual Basic.
L1.Text = "Saving"        ' Assign Text property. 
L2.Text = L1.Text         ' Copy Text property. 
L2 = L1                   ' Copy object reference.

Let is still a reserved word in Visual Basic 2008, even though it has no syntactical use. This helps avoid confusion with its former meanings. Visual Basic 2008 uses the Set statement for property procedures that set the value of a property.

Parameterized Properties

Default properties that take arguments are not ambiguous, and they are supported in Visual Basic 2008. Default properties appear most commonly on collection classes. In the System.Windows.Forms namespace, for example, the Form class supports the following hierarchy:

Form object

   Controls property  (returns a Control..::.ControlCollection object for this form)

      Control..::.ControlCollection object  (default property is Item)

         Item property (returns a Control object for one item in the collection)

            Control object

The Controls property returns a Control..::.ControlCollection object, and the Item property returns a Control object. The following example shows both valid and invalid use of default properties in Visual Basic 2008.

Dim F AsNew Form   ' Assume F has been created and initialized.
F.Controls.Item(0).Text = "Stop"  ' Valid -- no default properties used. 
F.Controls(0).Text = "Stop"  ' Valid -- Item is parameterized. 
'F(0).Text = "Stop"  ' INVALID -- Form does not have a default property. 'F.Controls(0) = "Stop"  ' INVALID -- No default property on Control. 

Default Property Declaration

In Visual Basic 2008, you specify a property as the default property by beginning its declaration with the Default keyword. If you overload the property name, you must specify Default in every overload declaration. You cannot declare a default property to be Shared or Private.

See Also

Concepts

Property Procedure Changes for Visual Basic 6.0 Users

Programming Element Support Changes Summary

Reference

Text

Label

Set Statement (Visual Basic)

System.Windows.Forms

Form

Control..::.ControlCollection

Control

Default (Visual Basic)