Entwickler-Ecke

WinForms - Text eines Nodes im TreeView wird abgeschnitten


Scofield2011 - Mo 05.12.11 01:22
Titel: Text eines Nodes im TreeView wird abgeschnitten
Hallo,

ich hätte da mal eine Frage zu TreeViews.

Und zwar habe ich ein TreeView mit mehreren Nodes, die jeweils auch Child Nodes haben.

Jetzt habe ich eine Suchfunktion geschrieben, die das Suchergebnis fett gedruckt ausgibt, das funktioniert auch ganz gut.


C#-Quelltext
1:
TestTree.Nodes[i].NodeFont = new Font(TestTree.Font, FontStyle.Bold);                    


Nur leider werden bei einem ausgeklapptem Node Buchstaben oder Teile davon von rechts her abgeschnitten, wahrscheinlich weil die fett gedruckten mehr Platz benötigen und an der bisherigen Stelle geschrieben werden.

Wie kann man den Text des Nodes, der mit oben stehendem Code fett gedruckt wurde in jedem Fall ordentlich darstellen? Muss ich vielleicht den ganzen Node neu zeichnen oder kann man einfach Teile davon aktualisieren?

Vielen Dank schon einmal im Voraus für eure Hilfe.

Scofield2011


mats74 - Mo 05.12.11 09:31

Hallo Scofield2011

Der angezeigte Textbereich des TreeView ist durch die erste Eingabe der Nodetexte gegeben.
Dadurch wird der letzte Buchstabe des Nodetextes beim Verändern der Eigenschaften abgeschnitten.
Dies passiert auch nur auf der untersten Ebene des TreeView (Hauptebene oder Subebene), wenn die Textlänge den vorgegebenen Textbereich ausfüllt.

Wenn Du dies verhindern willst, kannst Du ein Leerschlag dem gewünschten Nodetextes anfügen:


C#-Quelltext
1:
2:
treeView1.Nodes[0].Nodes[0].FirstNode.NodeFont = new Font(treeView1.Font, FontStyle.Bold);
treeView1.Nodes[0].Nodes[0].FirstNode.Text += " ";


Dann wird der Text in jedem Fall korrekt angezeigt.
Eine professionellere Lösung habe ich bis jetzt nicht gefunden.
Eine Aktualisierung der Strukturknoten bewirkt in diesem Fall nichts.


Scofield2011 - Fr 16.12.11 19:01

Danke noch einmal für den Tipp.


Th69 - Fr 16.12.11 19:54

Hallo,

hattest du den Hinweis zu NodeFont [http://msdn.microsoft.com/de-de/library/system.windows.forms.treenode.nodefont.aspx] denn nicht gelesen?
Zitat:
Wenn die Knotenschriftart größer ist als der im TreeView-Steuerelement festgelegte Font-Eigenschaftswert, wird der Bezeichnungstext des Strukturknotens abgeschnitten.

Eine Möglichkeit wäre demnach TreeView.Font auf 'bold' zu setzen und dann die einzelnen Nodes dann mit dem 'normal'-Font zu belegen (bis auf den hervorzuhebenden Knoten).