Autor Beitrag
Scofield2011
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Mo 05.12.11 01:22 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: 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:

ausblenden 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.

_________________
Gruss
mats74
Scofield2011 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Windows XP, Windows 7, Windows 8
C#, VBA, VB
BeitragVerfasst: Fr 16.12.11 19:01 
Danke noch einmal für den Tipp.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 16.12.11 19:54 
Hallo,

hattest du den Hinweis zu NodeFont 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).