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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ********************************************** | |
// 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); | |
} | |
} |
Gefunden auf dotnet-snippets.de
Bei Fragen zu diesem Snippet besuchen Sie das dotnet-forum.de.
UPDATE:
Ich habe soeben eine wunderbare Möglichkeit gefunden, Codesnippets in meinem Blog in lesbarer Form einzubetten.
Einfach auf http://gist.github.com/ gehen, Code eingeben und Programmiersprache auswählen.
Klappt super, außer dass mein Blog scheinbar nicht breit genug ist xD
Keine Kommentare:
Kommentar veröffentlichen