Feedback

C# - ListBox mit ToolTip für längere Einträge

Veröffentlicht von am 18.10.2006
(3 Bewertungen)
Für Benutzer ist es immer wieder ärgerlich, wenn eine ListBox Einträge anzeigt, die länger sind als die ListBox breit ist. Die ToolTipListBox löst dieses Problem, indem sie zu lange Einträge in einem ToolTip anzeigt wenn der Benutzer mit der Maus darüber fährt.
GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

// **********************************************
// Dies ist eines der 322 Rezepte aus dem
// C# 2005 Premium Codebook. 
// Das Snippet wurde vom Autor mit freundlicher 
// Genehmigung von Addison Wesley 
// bei dotnet-snippets.de veröffentlicht.
// **********************************************


/// <summary>
/// ListBox, die für Einträge, die nicht vollständig sichtbar sind, einen
/// ToolTip anzeigt
/// </summary>
public class ToolTipListBox : ListBox
{
   /// <summary>
   /// Verwaltet den ToolTip
   /// </summary>
   private ToolTip toolTip = new ToolTip();

   /// <summary>
   /// Setzt den ToolTip mit dem Eintrag, der gerade unter der Maus liegt,
   /// wenn der Eintrag nicht komplett angezeigt wird
   /// </summary>
   protected override void OnMouseMove(MouseEventArgs e)
   {
      base.OnMouseMove(e);

      // Ermitteln des Eintrags unter der Maus
      Point p = base.PointToClient(Cursor.Position);
      int index = base.IndexFromPoint(p);
      if (index > -1)
      {
         string item = base.Items[index].ToString();

         // Überprüfen, ob der Eintrag in der Breite in die Liste passt
         using (Graphics g = base.CreateGraphics())
         {
            int width = (int)g.MeasureString(item, base.Font,
               0, StringFormat.GenericTypographic).Width;
            if (width > base.ClientRectangle.Width)
            {
               // ToolTip setzen
               this.toolTip.SetToolTip(this, item);
            }
            else
            {
               // ToolTip zurücksetzen
               this.toolTip.SetToolTip(this, null);
            }
         }
      }
      else
      {
         // ToolTip zurücksetzen
         this.toolTip.SetToolTip(this, null);
      }
   }

   /// <summary>
   /// Setzt den ToolTip wieder zurück
   /// </summary>
   protected override void OnMouseLeave(EventArgs e)
   {
      base.OnMouseLeave(e);

      // ToolTip zurücksetzen
      this.toolTip.SetToolTip(this, null);
   }
}

Abgelegt unter ListBox, ToolTip.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!