Ich habe eine App, die mit einem Remote-Server verbunden ist und Daten abfragt, wenn sie benötigt werden. Es hat eine TreeView, wo die Knoten die verfügbaren Objekte darstellen und die Farbe des Textes anzeigt, ob die Daten geladen wurden oder nicht; grau-kursiv bedeutet nicht geladen, schwarz, normaler Text ist geladen.
Zur Zeit habe ich die TreeView auf OwnderDrawText eingestellt und lasse die TreeView.DrawNode Funktion einfach den Text so zeichnen:
%Vor%Ich dachte, das wäre genug, aber das hat einige Probleme verursacht;
Ich habe versucht, dem Beispiel in diese Frage. Es sah ungefähr so aus:
%Vor%Die Ergebnisse waren jedoch das . (Hinweis, verwendet Rosa, um die Farben zu unterscheiden). Wie Sie sehen können, erstreckt sich der hervorgehobene Hintergrund nicht bis zu der Stelle, an der sich die fokussierte gepunktete Linie befindet. Und es gibt auch eine andere Box, die ebenfalls gezeichnet wird.
Ich bin etwas ratlos, wie ich das beheben kann. Alles, was ich will, ist grauer kursiver Text, wenn etwas geladen ist. Der erste und einfachste Ansatz funktioniert nicht ganz und die zweite Methode fühlt sich an, als würde ich viel zu viel tun.
Nach all dem hat jemand irgendwelche Vorschläge, wie man das richtig macht, weil es einen einfacheren Weg geben muss.
Vielen Dank im Voraus.
Sie müssen TextRenderer.DrawText () verwenden. Das ist, was TreeView verwendet, es rendert Text etwas anders als Graphics.DrawString ().
Tags und Links c# winforms treeview ownerdrawn