Modern Windows applications come complete with extensive toolbars that serve as quick access to various menu choices. In the early days of Windows, these toolbars were nothing but buttons, but today they may include drop downs, combo boxes, and other advanced controls.
Visual Studio .NET makes creating toolbars for your application very easy. The steps are as follows:
To keep the example simple, start with the OwnerDraw menu you completed earlier and add a simple toolbar.
18.3.1 Creating the ImageList
Begin by dragging an ImageList onto the form. Notice that one of the properties, Images, is marked as a collection. Click on the ellipsis (...) to open the image list. This opens the Image Collection Editor. Click the Add button.
This step opens a dialog for identifying the image you want to add from images you may have stored on disk. Navigate to Program FilesMicrosoft Visual Studio .NET 2003Common7GraphicsBitmaps. In this directory, there are two directories with useful icons: OffCtlBr and Assorted. For this example, navigate into OffCtlBr, into Large, and then Color.
Choose the New.bmp file, which adds the bitmap to your collection. Notice that the righthand side of the dialog, with the bitmap properties, is read-only. Add a few more bitmaps, as shown in Figure 18-16.
Figure 18-17. Image collection editor
18.3.1.1 Adding the toolbar
You now have a collection of bitmaps, and you are ready to create your toolbar. Drag a Toolbar control onto the form. It docks under your menu, although you will be free to change that later.
Navigate to the ImageList property of the new toolbar and set the property to the ImageList you've just created.
Click on the Buttons property of the Toolbar to open the ToolBarButton Collection Editor. Click on the Add button to add a button. In the Properties window of the ToolBarButton Collection Editor, set the Button name to btnNew, and set the ImageIndex to the index for the New file icon (index 0). Set the Text to New and set the ToolTip text to "Create new File." Finally, set the Tag property to New as well.
The Tag property does not affect the display of the menu, but it helps identify which button was pressed, as all buttons on a toolbar share a common event handler.
Your ToolBarButton Collection Editor should look like Figure 18-17.
Figure 18-18. Adding buttons to the toolbar
Go ahead and add an Open button and a Save button. You do not have to use all the images in your image list; which one you use is up to you.
18.3.1.2 Adding event handlers
If you double-click on one of the buttons, Visual Studio .NET will create an event handler for the toolbar. Notice that the event handler is not per button. You'll have to figure out which button was pressed, but this task is simplified when the ToolBarButtonClickEventArgs parameter is passed in to the event handler.
private void toolBar1_ButtonClick( object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { switch ( e.Button.Tag.ToString( ) ) { case "New": mnuNew.PerformClick( ); break; case "Open": mnuFileOpen.PerformClick( ); break; case "Save": mnuFileSave.PerformClick( ); break; } }
Private Sub ToolBar1_ButtonClick( _ ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) _ Handles ToolBar1.ButtonClick Dim tag As String = e.Button.Tag Select Case tag Case "New" mnuNew.PerformClick( ) Case "Open" mnuFileOpen.PerformClick( ) Case "Save:" mnuFileSave.PerformClick( ) End Select End Sub
Clicking on the New button now opens an MDI window, and clicking on Open or Save evokes the same event handler as the menu choices, as shown in Figure 18-18.
Figure 18-19. Implementing toolbar events
18.3.1.3 Tool tips
Notice that one of the properties you set on your toolbar was the ToolTipText property. If the user hovers over one of your buttons, the tool tip will appear to provide additional information about the button, as shown in Figure 18-19.
Figure 18-20. Using tool tips
18.3.1.4 Altering the appearance
Several toolbar properties can help you tailor the appearance of your buttons. For example, you can change the TextAlign property from Underneath to Right, and put the text next to the icon to make wider, but shorter buttons, as shown in Figure 18-20.
Figure 18-21. Setting the TextAlign property
Another example is the Appearance property, which can be set to either Flat or Normal. If you change the appearance to Flat, the buttons look flat except when you hold the cursor over the button, as shown in Figure 18-21. You have to look closely and compare the New button (for example) in Figure 18-21 with the New button shown in Figure 18-19.
Figure 18-22. Appearance set to flat
Dozens of properties can set the appearance of the Toolbar. Some of the most important and common properties are listed in Table 18-8.
Property |
Type |
Description |
---|---|---|
Appearance |
ToolBarAppearance |
Read/Write. Valid values are members of the ToolBarAppearance enumeration, which has two values: Flat and Normal. The default value is ToolBarAppearance.Normal. If the appearance is set to ToolBarAppearance.Flat, the buttons are flat until the mouse is held over them. |
AutoSize |
Boolean |
Read/write. Will the Toolbar adjust its size automatically? The default is true. |
BorderStyle |
BorderStyle |
Read/write. Specifies the style of border around the toolbar. Valid values are members of the BorderStyle enumeration, which has three values: Fixed3D, FixedSingle, and None. The default value is BorderStyle.None. |
Buttons |
ToolBarButtonCollection |
Read-only. The collection of ToolBarButton objects contained by the Toolbar. |
ButtonSize |
Size |
Read/write. The size of the buttons on the toolbar (typically 16 x 16). |
Divider |
Boolean |
Read/write. If true (the default), a raised edge is displayed along the top of the Toolbar to separate it from the menus. |
DropDownArrows |
Boolean |
Read/write. If true, drop-down Toolbar buttons display down arrows. The default value is false. |
ImageList |
ImageList |
Read/write. The image list containing the images to be displayed by the buttons on the Toolbar. |
ShowToolTips |
Boolean |
Read/write. If true, tool tips are displayed for each button. The default value is false. |
TextAlign |
ToolBarTextAlign |
Read/write. Specifies the alignment of the text associated with a Toolbar button. Valid values are members of the ToolBarTextAlign enumeration: Right and Underneath. The default is ToolBarTextAlign.Underneath. |
Wrappable |
Boolean |
Read/write. If true (the default), the Toolbar buttons wrap to the next line if there is insufficient space for all the buttons on a single line. |
18.3.1.5 Adding a combo box to the Toolbar
You can do much more with toolbars. For example, while the IDE will not help you add more complex controls, you are free to add them programmatically.
To add a combo box to the Toolbar, add code to the constructor of the form that creates a combo box, initializes its members, and then adds it to the Toolbar:
public Form1( ) { InitializeComponent( ); ComboBox cb = new ComboBox( ); cb.Left = 150; cb.Top = 5; cb.Items.Add("Alabama"); cb.Items.Add("Alaska"); cb.Items.Add("Arizona"); cb.Items.Add("Arkansas"); toolBar1.Controls.Add(cb); }
Public Sub New( ) MyBase.New( ) InitializeComponent( ) Dim cb As New ComboBox( ) cb.Left = 150 cb.Top = 5 cb.Items.Add("Alabama") cb.Items.Add("Alaska") cb.Items.Add("Arizona") cb.Items.Add("Arkansas") ToolBar1.Controls.Add(cb) End Sub
The Combo box is added to the Toolbar, as shown in Figure 18-22.
Figure 18-23. Adding a combo box to the Toolbar
|
Windows Forms and the .NET Framework
Getting Started
Visual Studio .NET
Events
Windows Forms
Dialog Boxes
Controls: The Base Class
Mouse Interaction
Text and Fonts
Drawing and GDI+
Labels and Buttons
Text Controls
Other Basic Controls
TreeView and ListView
List Controls
Date and Time Controls
Custom Controls
Menus and Bars
ADO.NET
Updating ADO.NET
Exceptions and Debugging
Configuration and Deployment