Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 124
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

ListBox mit ToolTip für längere Einträge


Autor: Jürgen Bayer
Sprache: C#
Bewertung:
8.38 (3 votes)
Anzahl der Aufrufe: 12460
  
Kick it on dotnet-kicks.de  

Beschreibung:

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.

Abgelegt unter: ListBox, ToolTip.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// **********************************************
// 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);
   }
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.