InternetToolTip Control

Da das in .NET eingebaute ToolTip Control sehr unflexibel ist habe ich mich dazu entschlossen ein eigenes Control zu schreiben.

Um einen ansprechenden ToolTip mit flexiblen Datengrundlagen in weitere Windows Forms Projekte einzubauen, habe ich kurzerhand ein solches Steuerelement geschrieben. Die Vorteile meines Steuerelements liegen in seiner Erweiterbarkeit und Abwärtskompatibilität zum existierenden ToolTip Steuerelement von Microsoft.

Die prinzipielle Verwendung des Steuerelements ist recht einfach. Mit dem Windows Forms Designer kann man nach Einbinden der Bibliothek das Steuerelement (InternetToolTip) in die entsprechenden Formulare reinziehen. Für anspruchsvollere Änderungen muss man den Code-Behind verwenden.

Dieses Beispiel soll die Verwendung von eigenen Datenprovidern und das Anpassen der enthaltenen Datenansicht zeigen:

//Create instance
InternetToolTip toolTips = new InternetToolTip();
//Sets the text displayed while async. requests
toolTips.LoadText = "Please wait!";
//Sets the data provider to a new one (provided in the sample code)
toolTips.DataProvider = new SampleDataProvider();
//Gets the default view provider
BasicToolTipView toolView = toolTips.DataView as BasicToolTipView;
//Sets the animation effect to slide with a duration of 200ms
toolView.Animation(BasicToolTipView.Effect.Slide, 200);
//Changes the first gradient color to light blue
toolView.GradientColorOne = Color.LightBlue;
//Changes the second gradient color to light gray
toolView.GradientColorTwo = Color.LightGray;

Um eigene Zeichenoperationen auf der Datenansicht vorzunehmen ist folgender Code notwendig:

//Sets the DrawMode to a custom mode
toolView.DrawMode = DrawMode.OwnerDrawVariable;
//Assigns the events -- setting the callbacks
toolView.DrawToolTipView += 
  new rsi.Controls.iToolTip.DrawToolTipEventHandler(drawToolTipView);
toolView.MeasureToolTipView += new MeasureToolTipEventHandler(measureToolTipView);

Um einen einfachen String auf den ToolTip zu zeichnen sind folgende Methoden einzubauen:

void measureToolTipView(object sender, MeasureToolTipEventArgs e)
{
  e.Height = TextRenderer.MeasureText(e.ToolTip.ToString(), 
             e.Font, new Size(e.Width, e.Height)).Height;
}

void drawToolTipView(object sender, rsi.Controls.iToolTip.DrawToolTipEventArgs e)
{
  //Draws the Background
  e.DrawBackground();
  //Draws some Text in the middle of the bubble
  TextRenderer.DrawText(e.Graphics, e.ToolTip.ToString(), e.Font, e.Bounds, e.ForeColor, 
                        TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
}

Download Source.zip (253 kB)

Created . Last updated .

References

Sharing is caring!