Laden...

TreeView: SelectedNode soll visuell markiert bleiben, wenn das TreeView den Fokus verliert

Erstellt von Bi0logiCaL vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.311 Views
B
Bi0logiCaL Themenstarter:in
24 Beiträge seit 2009
vor 12 Jahren
TreeView: SelectedNode soll visuell markiert bleiben, wenn das TreeView den Fokus verliert

Hallo zusammen,

ich habe ein TreeView welches von einer .mdb beim starten des Programms "gefüllt" wird. Nachdem der TreeView gefüllt ist habe ich unter dem Punkt "Benutzer" mehrere User aufgelistet. Sobald einer von diesen Benutzern ausgewählt wird, werden dessen Informationen aus der Datenbank in Textboxes auf der gleichen Form neben dem TreeView dargestellt. Soweit so gut. Nun zu meiner Frage:

Nachdem ich zu eine beliebige Textbox wechsele, wird logischerweise dem TreeView dessen Fokus genommen und leider ist der ausgewählte Benutzer, dessen Informationen bearbeitet werden, nicht mehr visuell in der TreeView ausgewählt.

Ich habe bereits die "HideSelection" Eigenschaft des Treeviews auf False gesetzt, aber so wirklich umsetzten tut er dies nicht. Ebenfalls habe ich es ausprobiert dem TreeView erneut den Fokus zu geben, aber auch dies ging wohl in die Hose.

Wäre super wenn jmd mir mal verraten könnte, was ich hier Falsch mache - Danke!

MfG
Gary /&/ Bi0^

G
47 Beiträge seit 2011
vor 12 Jahren

Hi Bi0logiCaL,

zunächst einmal funktioniert es bei mir, wenn ich HideSelection auf false setze.

Wenn das bei dir aber absolut nicht will (warum auch immer) hätte ich sonst noch einen Workaround für dich.

Du setzt einfach bei jeder Änderung der Auswahl manuell die Farben:


        private TreeNode _selected = null;
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (_selected != null)
            {
                _selected.ForeColor = SystemColors.ControlText;
                _selected.BackColor = treeView1.BackColor;
            }
            _selected=treeView1.SelectedNode;
            _selected.ForeColor = SystemColors.HighlightText;
            _selected.BackColor = SystemColors.Highlight;
        }

Gruß Gwinn

[Edith schreibt] Alternativ kann man natürlich auch den Code auf das Leave und das Enter Ereignis aufteilen, dann wird der Farbwechsel nur durchgeführt, wenn das TreView den Fokus erhält bzw verliert.

B
Bi0logiCaL Themenstarter:in
24 Beiträge seit 2009
vor 12 Jahren

Hey Gwinn,

super - vielen Dank für dein Workaround - das hat super geklappt! 👍

Danke! 🙂

MfG
Gary /&/ Bi0^