2009-11-03 19 views
5

Ich verwende ein Windows Forms TreeView-Steuerelement in meinem Programm. Ich möchte dem Benutzer erlauben, mehrere Knoten auf der gleichen Ebene auszuwählen, indem sie den Mauszeiger ziehen (auch "Lasso" -Auswahl genannt). Ich glaube nicht, dass ein Standard-TreeView das erlaubt.Mehrfachauswahl in einem TreeView

Meine Frage ist, was wäre der beste Weg, dies zu erreichen? Muss ich ein benutzerdefiniertes Auswahlverhalten in einem benutzerdefinierten oder abgeleiteten Steuerelement schreiben? Wo soll ich anfangen?

Ich brauche keine detaillierte Erklärung. Nur ein kleiner Schubs in die richtige Richtung.

Antwort

6

Dies wird nicht einfach mit einem Standard WinForms TreeView Steuerelement zu tun. Das Steuerelement TreeView unterstützt nur die einfache Auswahl pro Baum. Es ist nicht möglich, mehrere Knoten im Baum gleichzeitig auszuwählen.

Um dieses Verhalten zu erhalten, müssten Sie wahrscheinlich eine sehr ähnliche Klasse wie TreeView erstellen, die eine Mehrfachauswahl ermöglicht. Eine weitere Möglichkeit besteht darin, von TreeView abzuleiten und die Mehrfachauswahl durch Überschreiben bestimmter Verhaltensweisen zu ermöglichen. Hier ist ein Artikel, wie man Letzteres macht.

+0

Ich verstehe die benutzerdefinierte Steuerung Ansatz, um Multi-Auswahl zu erhalten. Welche Richtung würden Sie vorschlagen, um eine "Lasso" -Auswahl zu implementieren? Muss ich auf die benutzerdefinierte Zeichnung auf GDI-Ebene zurückgreifen, oder gibt es eine API oder etwas, das Windows dafür aufdeckt, was meine Arbeit erleichtern kann? –

+0

@ Frederick, ich bin keine große Person Kommentar dazu. Mein Vorschlag wäre, eine separate neue Frage zu öffnen, die sich ausschließlich auf die Implementierung der Lasso-Auswahl in einem generischen WinForm-Steuerelement konzentriert. Das wird wahrscheinlich bessere Ergebnisse bringen. – JaredPar

+0

Danke Jared. Ich werde genau das tun. –

0

Betrachten in einer Steuermehrfachauswahl implementieren, die eine Mehrfachauswahl wie Listview unterstützt. Wenn Sie die Standards einhalten, die die meisten Windows-Benutzer verstehen, erhalten Sie eine Lösung, die einfacher zu implementieren und einfacher zu verwenden ist.

Wenn Sie wirklich etwas aufwendigeres benötigen, müssen Sie möglicherweise ein benutzerdefiniertes Steuerelement entwickeln.