xtender classes do just that; they allow you to extend the functionality of a .NET control class. The Error Provider and Tooltip classes are two examples of extender classes in the .NET Framework. The Tooltip class represents a significant departure from how tooltips were implemented in earlier versions of Visual Studio. The Error Provider class provides a new way to inform users about invalid input. Although each class serves a different purpose, their implementation is quite similar. This article introduces these two classes and gives a brief, yet comprehensive primer on how to use them.
You can obtain the source code for this article here
Implementing tooltips in Visual Basic 6 was easy. You simply set the Form's ShowTips
property to True
and set the ToolTipText
property of each control on the form to the desired string setting. Visual Studio .NET has taken this procedure and turned it on its ear. Is it a better design? I don't know. I will reserve judgment on the issue and I will instead help you intelligently add tooltips to your .NET controls.
If you are like me you will instinctively look for properties like ToolTipText
. However, these properties don't exist in .NET. Instead, there is a class devoted to this singular task called the Tooltip class. Instead of setting properties on the control you implement the Tooltip class and through various property settings, you inform the Tooltip class of the control's existence. The basic steps are:
- From the toolbox, select the Tooltip class.
- Drag the Tooltip class to the form.
- Drop the Tooltip class onto the form.
shows you how to implement the Tooltip class in an application.
|Figure 1: Non visual classes like the Tooltip class, while members of the form, are not located on the form's design surface.|
Once you've added the Tooltip class you can put it to work. Tooltips get displayed whenever you position the mouse pointer over a control for a few moments. In Visual Basic 6 you didn't need to worry about trapping events since VB 6 handled everything automatically. In Visual Studio .NET this is not the case. The following snippet illustrates the code you might add to the Command Button's MouseHover
Private Sub Button1_MouseHover( _
ByVal sender As Object, _
ByVal e As System.EventArgs) _
"This button will validate the controls " & _
"and check for errors")
The code is straightforward. When the user positions the mouse pointer over the control, the control sends a SetToolTip
message to the ToolTip object; sending a reference to itself as well as the text that it should display. Figure 2
illustrates how the tooltip appears at runtime.
|Figure 2: The Tooltip class is an extender class because it extends the functionality of another control.|
While adding tooltips are simple, it does seem as through developers are taking a step backward. Setting properties in Visual Basic 6, in this author's opinion, is more straightforward and simple. .NET's way of implementing tooltips appears to add more work with little benefit in return. In preparing this article I wondered if there was a simple way to achieve the ease of the past. Then it dawned on mewhat about OOP? Specifically, why not subclass the .NET textbox and outfit it with the tooltip functionality? Then, when I want tooltips I can simply add the textbox and set a property; just like in the good old days!