C# - TreeView - /Zuklappen der Eltern wählen

Dieser ist schwer zu erklären, so will ich Ihnen nur sagen, was ich erreichen will und wie ich das mache, damit es vielleicht jemand witll eine Idee, was ich falsch mache.

In meinem winForm-ich habe eine TreeView-Steuerelements, die ich Auffüllen. Alle Eltern haben die Kinder (viele von Ihnen), aber keine Kinder eigene Kinder haben. Beispiel:

- Parent 1
        Child 1
        Child 2
        Child 3
- Parent 2
       Child 4

Verhalten ich will ist Folgendes:

  1. wenn der Benutzer klickt auf ein Kind es ausgewählt ist (standardmäßig gesetzt)
  2. Wenn der Benutzer auf ein Elternteil, es sollte entweder reduzieren bzw. zu erweitern, aber nicht ändern, jede Auswahl

Punkt 1 ist kein problem, es ist das default-Verhalten eines TreeView, Punkt 2 ist jedoch eine andere Geschichte.

Hier ist, was ich bisher getan habe:

Um zu verhindern, dass die Eltern ausgewählt werden, füge ich ein BeforeSelect event-handler und setzen Sie den folgenden code:

if (e.Node.Parent == null)
    e.Cancel = true;

Dies macht den job perfekt. So, jetzt, dass ich storniert die Auswahl der Eltern-ich möchte das erweitern oder reduzieren. Also änderte ich den obigen code:

if (e.Node.Parent == null)
{
    if (e.Node.IsExpanded)
    {
        e.Node.Collapse();
    }
    else
    {
        e.Node.Expand();
    }
    e.Cancel = true;
}

Diese etwas funktioniert - außer, dass, im Gegensatz zu den Klick auf das + - Zeichen aufrufen von Expand() auf-oder Zuklappen() gibt den übergeordneten Knoten ausgewählt werden, ohne auf die e.Cancel = true; - Zeile.

Ich versucht, immer die SelectedNode-bevor ich rufen Collapse() oder Expand() und dann setzen Sie es zurück - es funktioniert aber wenn ich das mache, dehnt es sich die Eltern erneut, um die Auswahl vorzunehmen.

Somewhow das + - Zeichen bedeutet genau das, was ich will, geschehen wird, wenn ich auf ein Eltern - ich kann einfach nicht scheinen, um es zu arbeiten.

Ideen?

Vielen Dank im Voraus

InformationsquelleAutor 537mfb | 2012-04-12

Schreibe einen Kommentar