Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


advertisement
 

Working with Extender Classes

In Visual Basic 6 you didn't need to worry about trapping events since VB6 handled everything automatically. In Visual Studio .NET this is not the case.


advertisement
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.

Tooltip Class
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 and ShowTips. 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:

  1. From the toolbox, select the Tooltip class.
  2. Drag the Tooltip class to the form.
  3. Drop the Tooltip class onto the form.
Figure 1 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 event:

Private Sub Button1_MouseHover( _ ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Button1.MouseHover Me.ToolTip1.SetToolTip(Me.Button1, _ "This button will validate the controls " & _ "and check for errors") End Sub


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 me—what 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!



Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date