Laden...

Wie Zeichne ich eine Leiste in eine TreeViwe rein?

Letzter Beitrag vor 11 Monaten 4 Posts 736 Views
Wie Zeichne ich eine Leiste in eine TreeViwe rein?

Grüße,

Ich hätte mal eine Frage:

Ich möchte in einer TreeViwe eine Leiste haben, welche mir Zeilen Nummer darstellt.

Der Baum welcher in der TreeViwe angezeigt wird, stellt den Inhalt einer XML-Datei da. Die Zeilen-Nummer stellt die Zeile des Elements im Dokument dar. Je nach dem wie viele Elemente aufgeklappt werden, werden mehr oder weniger Zeilen-Nummern angezeigt.

So meine Vorstellung.

Wie Zeichne ich diese Leiste in die TreeViwe rein? Oder gibt es sowas schon?

MfG.

Hallo,

so ganz verstehe ich nicht, wo du genau die Leiste haben möchtest. Meinst du vertikal und vor jedem Eintrag dann die Zeilennummer dort angezeigt?

Zum Zeichnen schau dir die Ereignisse Paint und DrawNode an.

PS: Es heißt TreeView (nicht TreeViwe).

Grüße,

Danke für den Tipp ich kuck es mir an.

Im Anhang ist es Bild, wie ich es mir vorstelle.

Mfg.

OK, also als eigenes Control (z.B. Panel) könntest du dies auch umsetzen. Dazu dann bei jedem AfterCollapse/AfterExpand-Ereignis ein Neuzeichnen, z.B. per Invalidate(), anstoßen.

Und dann (abhängig von der Scrollbar) bei TopNode beginnen und durch die Knoten des TreeViewiterieren (entsprechend IsExpanded ), und mit gleichem Font die Zeilennummern zeichnen, damit die Höhe paßt - s.a. [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox).

Du kannst dies auch als ein UserControl umsetzen, das beide Controls beinhaltet (und z.B. bei Größenveränderung korrekt reagiert).

Insgesamt ist dies etwas langsamer als direkt im TreeView zu zeichnen, da 2x iteriert wird, aber dafür muß man nicht selber das Zeichnen des TreeViews übernehmen (bzw. anstoßen).

Edit: Es gibt kein OnScroll-Ereignis beim TreeView, daher müßtest du mit einem Timer überprüfen, ob sich TopNode geändert hat (und dann ebenfalls ein Neuzeichnen veranlassen).

Edit2: Wenn man von TreeView ableitet, kann man auf das Scrollen reagieren: [RESOLVED] Trapping TreeView's Scroll Events?

So mußt du jetzt selber entscheiden, welcher Ansatz für dich einfacher umzusetzen ist.