Beschreibung:
Zugegeben, der Titel entspricht nicht ganz dem was hier angeboten wird. Das UserControl, welches ich hier präsentiere ist kein vollständiger Klon der Visual Sutio 2005 ToolBox, sieht aber wenigstens so ähnlich aus.
Ich habe eine ganze Zeit lang nach einer kostenlosen Variante dieses Controls gesucht, aber nichts brauchbares gefunden. Also habe ich mich selbst dran gemacht.
Das Control an sich ist ein ganz normaler (überschriebener) TreeView dessen OnDrawNode Methode die Elemente wie Visual Studio 2005 zeichnet.
Vorschau:
Das Control ist nicht ganz fertig, aber bereits brauchtbar. Was noch fehlt sind erweiterte Tooltips, Elemente umguppieren und das Umbenennen von Elementen.
Im Gegensatz zum normalen TreeView gibt es in diesem Control nur zwei Ebenen; Die Root Elemente und die SubItems darunter.
Root Element hinzufügen:
toolBox.Nodes.Add("Neues Root Element";);
SubItem hinzufügen:
TreeNode newSubItem = new TreeNode("Neues SubItem";);
// In this case SelectedNode is a Root Element
toolBox.SelectedNode.Nodes.Add(newSubItem);
So, den Sourcecode stelle ich euch natürlich zur Verfügung. Lizenz: Public Domain
Update - 03.05.2008:*Bug Fix: Von osre gemeldeter Workaround eingebaut *Bug Fix: Textbox zum umbenennen eines Items war zu lang *Feature: Items können nun Disabled dargestellt werden
Schlagwörter: ToolBox, Visual Studio 2005, TreeView, OwnerDraw
Eventuelle Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Cool, genau sowas habe ich auch schon ewig gesucht und nix Gutes gefunden.
Bei CodeProject gibts zwar Toolboxes, die sind aber nicht so toll.
Werd dein Control zu Hause gleich mal ausprobieren.
Grüße,
Big Al
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
So, hier mal ein kleines Update.. Jetzt mit ToolTips.
Gruß Wacky
Edit: Habe noch schnell das Umbenennen der Nodes eingebaut. Viel Spaß damit! 🙂
Eventuelle Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Wenn man auf das [+] / * Symbol clickt, dann passiert nichts (bzw. expand/collapse wird doppelt ausgeführt.
Folgender fix behebt das Problem.
protected override void OnMouseDown(MouseEventArgs e)
{
TreeViewHitTestInfo hti = this.HitTest(e.X, e.Y);
if (hti.Node != null && hti.Location != TreeViewHitTestLocations.PlusMinus)
{
this.SelectedNode = hti.Node;
if (hti.Node.Level == 0)
{
if (hti.Node.IsExpanded == true)
{
hti.Node.Collapse();
}
else
{
hti.Node.Expand();
}
}
}
base.OnMouseDown(e);
}
Reinhard Ostermeier.