ListView-Klasse

Stellt ein Listenansicht-Steuerelement von Windows dar, das eine Auflistung von Elementen anzeigt, die in einer von vier Ansichten angezeigt werden können.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public class ListView : Control
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public class ListView extends Control
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public class ListView extends Control

Mit einem ListView-Steuerelement können Sie eine Liste von Elementen mit Elementtext und (optional) einem Symbol für die Bezeichnung des Elementtyps anzeigen lassen. Die Darstellung eines ListView-Steuerelements ähnelt z. B. der Liste von Dateien in Windows Explorer. Es zeigt eine Liste der Dateien und Ordner an, die gegenwärtig in der Struktur ausgewählt sind. Für jede Datei und jeden Ordner wird ein zugeordnetes Symbol angezeigt, durch das der Typ der betreffenden Datei bzw. des betreffenden Ordners angegeben wird. Die ListViewItem-Klasse stellt ein Element in einem ListView-Steuerelement dar. Die in der Liste angezeigten Elemente können in einer von fünf verschiedenen Ansichten angezeigt werden. Elemente können als große Symbole, als kleine Symbole oder als kleine Symbole in Form einer Liste angezeigt werden. Elemente können auch über Unterelemente verfügen, die Informationen zum übergeordneten Element enthalten In der Detailansicht können Sie das Element und seine Unterelemente in einem Datenblatt mit Spaltenheadern anzeigen lassen, die die Informationen angeben, die in einem Unterelement angezeigt werden. Mit der Kachelansicht können Sie das Element und seine Unterelemente nebeneinander, d. h. mit einem großen Symbol neben den Textinformationen anzeigen. Die Verfügbarkeit der Kachelansicht ist begrenzt, wie nachfolgend beschrieben. ListView unterstützt Einzel- und Mehrfachauswahl. Bei der Mehrfachauswahl kann der Benutzer ähnlich wie mit einem ListBox-Steuerelement aus einer Liste von Elementen auswählen. Darüber hinaus können ausgewählte Elemente aktiviert werden, um eine Aufgabe auszuführen. Sie können mit einem ListView-Steuerelement z. B. eine Liste von Dateien anzeigen lassen, die anschließend von der Anwendung geöffnet und verwendet werden können. Der Benutzer kann die Dateien auswählen, um sie zu öffnen. Anschließend kann er auf die Dateien doppelklicken, um die Elemente zu aktivieren und die Dateien in der Anwendung zu öffnen. In der ListView können mit der CheckBoxes-Eigenschaft außerdem Kontrollkästchen angezeigt werden. Damit können die Elemente aktiviert werden, für die eine Aktion ausgeführt werden soll. Das ListView-Steuerelement kann auf vielfältige Weise verwendet werden. Sie können mit dem Steuerelement Informationen aus einer Anwendung, einer Datenbank oder einer Textdatei anzeigen. Mit der ListView können auch Informationen von Benutzern entgegengenommen werden, z. B. durch Auswählen einer Reihe zu verarbeitender Dateien.

ListView enthält eine Vielzahl von Eigenschaften, die eine hohe Flexibilität in Darstellung und Verhalten gewährleisten. Mit der View-Eigenschaft können Sie die Art der Anzeige von Elementen ändern. Mit den Eigenschaften LargeImageList, SmallImageList und StateImageList können Sie die ImageList-Objekte angeben, die die für die Elemente angezeigten Bilder enthalten, sowie im Fall von StateImageList die Kontrollkästchen, die angezeigt werden, wenn die CheckBoxes-Eigenschaft auf true festgelegt ist. Um zu bestimmen, welche Elemente aktiviert sind, können Sie mit der CheckedItems-Eigenschaft auf die ListView.CheckedListViewItemCollection-Auflistung zugreifen. Mit der Columns-Eigenschaft können Sie auf die ListView.ColumnHeaderCollection zugreifen, in der die Spaltenheader gespeichert sind. Diese werden angezeigt, wenn die View-Eigenschaft des Steuerelements auf Details festgelegt ist. Mithilfe der Items-Eigenschaft werden der ListView Elemente hinzugefügt bzw. aus dieser entfernt. Mit der Items-Eigenschaft können Sie auf die ListView.ListViewItemCollection des Steuerelements zugreifen. Diese stellt Methoden für die Bearbeitung der Elemente im Steuerelement bereit. Wenn Sie zulassen möchten, dass die Benutzer den Text für ein Element bearbeiten können, verwenden Sie die LabelEdit-Eigenschaft. Wenn das Steuerelement eine große Anzahl von Elementen enthält, empfiehlt sich i. d. R. die Anzeige in einer sortierten Liste. Mit der Sorting-Eigenschaft können Sie die Elemente alphabetisch sortieren. Sie können die Darstellung eines ListView-Steuerelements auch vollständig anpassen. Legen Sie hierfür die OwnerDraw-Eigenschaft auf true fest, und behandeln Sie mindestens eins der folgenden Ereignisse: DrawItem, DrawSubItem und/oder DrawColumnHeader.

Viele der Eigenschaften des ListView-Steuerelements werden verwendet, wenn die View-Eigenschaft des Steuerelements auf Details festgelegt ist. Mit der AllowColumnReorder-Eigenschaft kann der Benutzer des ListView-Steuerelements die Reihenfolge der Spalten zur Laufzeit neu konfigurieren. Mit der FullRowSelect-Eigenschaft kann ein Element einschließlich seiner Unterelemente ausgewählt werden, anstatt nur das Element selbst auszuwählen. Sie können die GridLines-Eigenschaft verwenden, wenn Datenblattlinien in der Detailansicht angezeigt werden sollen, um die Begrenzungen von Elementen und Unterelementen in der ListView anzugeben. Mit der HeaderStyle-Eigenschaft können Sie den Typ der anzuzeigenden Spaltenheader angeben.

Zusätzlich zu der Vielzahl verfügbarer Eigenschaften für ein ListView-Steuerelement sind Methoden und Ereignisse vorhanden, mit denen die Anwendung weitere Fähigkeiten für die ListView bereitstellen kann. Mit der BeginUpdate-Methode und der EndUpdate-Methode können Sie die Leistung verbessern, wenn Sie einer ListView viele Elemente hinzufügen, indem Sie verhindern, dass das Steuerelement jedes Mal aktualisiert wird, wenn ein Element hinzugefügt wird. Wenn das ListView-Steuerelement Elemente und Unterelemente anzeigt, empfiehlt es sich, Funktionen für den Fall bereitzustellen, dass die Benutzer mit der rechten Maustaste auf ein Unterelement klicken. Bestimmen Sie mit der GetItemAt-Methode das Element, auf dessen Unterelement geklickt wird. Nachdem die Elemente von Benutzern bearbeitet wurden, können Sie beim Validieren dieser Elemente ein bestimmtes, zu änderndes Element anzeigen lassen. Die EnsureVisible-Methode kann aufgerufen werden, um sicherzustellen, dass sich das betreffende Element im sichtbaren Bereich des Steuerelements befindet.

Wenn die LabelEdit-Eigenschaft auf true festgelegt ist, können Sie Aufgaben wie das Validieren des bearbeiteten Texts vor und nach den vorgenommenen Änderungen ausführen. Erstellen Sie dazu einen Ereignishandler für das BeforeLabelEdit-Ereignis und das AfterLabelEdit-Ereignis. Wenn Aufgaben wie das Öffnen einer Datei oder das Anzeigen eines Dialogfelds ausgeführt werden sollen, um ein in einer ListView angezeigtes Element zu bearbeiten, können Sie einen Ereignishandler für das ItemActivate-Ereignis erstellen. Wenn Sie zulassen, dass Benutzer Elemente in einer ListView sortieren, indem sie auf einen Spaltenheader klicken, können Sie einen Ereignishandler für das ColumnClick-Ereignis erstellen, um den Sortiervorgang auszuführen. Wenn die CheckBoxes-Eigenschaft auf true festgelegt ist, können Sie durch die Behandlung des ItemCheck-Ereignisses bestimmen, ob eine Änderung des Aktivierungszustands eines Elements aufgetreten ist.

Zudem können Sie mit der BackgroundImage-Eigenschaft ein Hintergrundbild für ListView festlegen. Die Anwendung muss über das STAThreadAttribute für die Main-Methode verfügen, damit das Hintergrundbild für das ListView-Steuerelement vollständig angezeigt wird. Wenn ein ListView-Steuerelement mit einem Hintergrundbild in Internet Explorer gehostet wird, geben Sie zusätzlich comctl32.dll, Version 6.0, als abhängige Assembly in der Anwendungsmanifestdatei an, um sicherzustellen, dass das Hintergrundbild vollständig angezeigt wird.

HinweisHinweis

Das Festlegen der Cursor-Eigenschaft für ein ListView-Steuerelement wirkt sich nicht auf die Darstellung des Cursors in Version 1.1 und älteren Versionen von .NET Framework aus.

Windows XP und Windows Server 2003 stellen drei Features bereit, die das ListView-Steuerelement verbessern, wenn die Anwendung die Application.EnableVisualStyles-Methode aufruft: Kachelansicht, Gruppierung und Einfügemarke.

Mit der Kachelansicht können Sie Bild- und Textinformationen zu gleichen Teilen anzeigen lassen, indem der Text von Elementen und Unterelementen neben großen Symbolen angezeigt wird. Legen Sie die View-Eigenschaft auf View.Tile fest, um dieses Verhalten zu aktivieren.

Mit dem Gruppierungsfeature können Sie Elemente visuell in verwandte Kategorien gruppieren. Fügen Sie dem ListView-Steuerelement mithilfe der Groups-Eigenschaft ListViewGroup-Objekte hinzu, wenn Sie dieses Feature aktivieren möchten. Legen Sie die ShowGroups-Eigenschaft auf false fest, um das Feature vorübergehend zu deaktivieren.

Mit dem Feature für Einfügemarken können Sie die Neuanordnung von Elementen mittels Drag & Drop bereitstellen. Dabei werden die Positionen für das Ablegen durch visuelles Feedback angegeben. Zeigen Sie mithilfe des über die InsertionMark-Eigenschaft abgerufenen ListViewInsertionMark-Objekts die Einfügemarke an.

Diese Features stehen nur unter Windows XP und Windows Server 2003 zur Verfügung. Auf älteren Plattformen bleibt der diese Features betreffende Code ohne Auswirkungen. Die Kachelansicht wird als Symbolansicht angezeigt, und die Einfügemarke sowie Gruppen werden nicht angezeigt. In einigen Fällen können Sie Code einbeziehen, mit dem bestimmt wird, ob diese Features verfügbar sind, und Ausweichfunktionen bereitstellen, wenn sie nicht verfügbar sind. Diese Features werden von derselben Bibliothek bereitgestellt, die das Feature für Betriebssystemdesigns zur Verfügung stellt. Wenn Sie die Verfügbarkeit dieser Bibliothek überprüfen möchten, rufen Sie die FeatureSupport.IsPresent(Object)-Methodenüberladung auf, und übergeben Sie den OSFeature.Themes-Wert.

In der folgenden Tabelle werden einige der ListView-Member veranschaulicht sowie die Ansichten, in denen sie gültig sind:

ListView-Member

Ansicht

Alignment-Eigenschaft

SmallIcon oder LargeIcon

AutoArrange-Eigenschaft

SmallIcon oder LargeIcon

AutoResizeColumn-Methode

Details

Columns-Eigenschaft

Details oder Tile

DrawSubItem-Ereignis

Details

FindItemWithText-Methode

Details, List oder Tile

FindNearestItem-Methode

SmallIcon oder LargeIcon

GetItemAt-Methode

Details oder Tile

Groups-Eigenschaft

Alle Ansichten außer List

HeaderStyle-Eigenschaft

Details

InsertionMark-Eigenschaft

LargeIcon, SmallIcon oder Tile

Im folgenden Codebeispiel wird ein ListView-Steuerelement mit drei angegebenen ListViewItem-Objekten erstellt. Für jedes Element werden drei ListViewItem.ListViewSubItem-Objekte angegeben. Außerdem werden ColumnHeader-Objekte zum Anzeigen der Unterelemente in der Detailansicht erstellt. Darüber hinaus werden in dem Codebeispiel zwei ImageList-Objekte erstellt, um Bilder für die ListViewItem-Objekte bereitzustellen. Diese ImageList-Objekte werden der LargeImageList-Eigenschaft und der SmallImageList-Eigenschaft hinzugefügt. Im Beispiel wird das ListView-Steuerelement mithilfe folgender Eigenschaften erstellt:

  • View

  • LabelEdit

  • AllowColumnReorder

  • CheckBoxes

  • FullRowSelect

  • GridLines

  • Sorting

In diesem Beispiel muss der Code einem Form hinzugefügt werden, und die im Beispiel erstellte Methode muss vom Konstruktor oder einer anderen Methode im Formular aufgerufen werden. Außerdem müssen sich in diesem Beispiel die Bilder MySmallImage1, MySmallImage2, MyLargeImage1 und MyLargeImage2 im Stammverzeichnis von Laufwerk C befinden.

private void CreateMyListView()
{
    // Create a new ListView control.
    ListView listView1 = new ListView();
    listView1.Bounds = new Rectangle(new Point(10,10), new Size(300,200));

    // Set the view to show details.
    listView1.View = View.Details;
    // Allow the user to edit item text.
    listView1.LabelEdit = true;
    // Allow the user to rearrange columns.
    listView1.AllowColumnReorder = true;
    // Display check boxes.
    listView1.CheckBoxes = true;
    // Select the item and subitems when selection is made.
    listView1.FullRowSelect = true;
    // Display grid lines.
    listView1.GridLines = true;
    // Sort the items in the list in ascending order.
    listView1.Sorting = SortOrder.Ascending;
                
    // Create three items and three sets of subitems for each item.
    ListViewItem item1 = new ListViewItem("item1",0);
    // Place a check mark next to the item.
    item1.Checked = true;
    item1.SubItems.Add("1");
    item1.SubItems.Add("2");
    item1.SubItems.Add("3");
    ListViewItem item2 = new ListViewItem("item2",1);
    item2.SubItems.Add("4");
    item2.SubItems.Add("5");
    item2.SubItems.Add("6");
    ListViewItem item3 = new ListViewItem("item3",0);
    // Place a check mark next to the item.
    item3.Checked = true;
    item3.SubItems.Add("7");
    item3.SubItems.Add("8");
    item3.SubItems.Add("9");

    // Create columns for the items and subitems.
    listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
    listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
    listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left);
    listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center);

    //Add the items to the ListView.
            listView1.Items.AddRange(new ListViewItem[]{item1,item2,item3});

    // Create two ImageList objects.
    ImageList imageListSmall = new ImageList();
    ImageList imageListLarge = new ImageList();

    // Initialize the ImageList objects with bitmaps.
    imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage1.bmp"));
    imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage2.bmp"));
    imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage1.bmp"));
    imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage2.bmp"));

    //Assign the ImageList objects to the ListView.
    listView1.LargeImageList = imageListLarge;
    listView1.SmallImageList = imageListSmall;

    // Add the ListView to the control collection.
    this.Controls.Add(listView1);
}

private void CreateMyListView()
{
    // Create a new ListView control.
    ListView listView1 = new ListView();
    listView1.set_Bounds(new Rectangle(new Point(10, 10), 
        new Size(300, 200)));

    // Set the view to show details.
    listView1.set_View(View.Details);

    // Allow the user to edit item text.
    listView1.set_LabelEdit(true);

    // Allow the user to rearrange columns.
    listView1.set_AllowColumnReorder(true);

    // Display check boxes.
    listView1.set_CheckBoxes(true);

    // Select the item and subitems when selection is made.
    listView1.set_FullRowSelect(true);

    // Display grid lines.
    listView1.set_GridLines(true);

    // Sort the items in the list in ascending order.
    listView1.set_Sorting(SortOrder.Ascending);

    // Create three items and three sets of subitems for each item.
    ListViewItem item1 = new ListViewItem("item1", 0);

    // Place a check mark next to the item.
    item1.set_Checked(true);

    item1.get_SubItems().Add("1");
    item1.get_SubItems().Add("2");
    item1.get_SubItems().Add("3");

    ListViewItem item2 = new ListViewItem("item2", 1);
    item2.get_SubItems().Add("4");
    item2.get_SubItems().Add("5");
    item2.get_SubItems().Add("6");

    ListViewItem item3 = new ListViewItem("item3", 0);

    // Place a check mark next to the item.
    item3.set_Checked(true);

    item3.get_SubItems().Add("7");
    item3.get_SubItems().Add("8");
    item3.get_SubItems().Add("9");

    // Create columns for the items and subitems.
    listView1.get_Columns().Add("Item Column", -2, 
        HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 2", -2, HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 3", -2, HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 4", -2, HorizontalAlignment.Center);

    //Add the items to the ListView.
    listView1.get_Items().AddRange(new ListViewItem[] { item1, item2, 
        item3 });

    // Create two ImageList objects.
    ImageList imageListSmall = new ImageList();
    ImageList imageListLarge = new ImageList();

    // Initialize the ImageList objects with bitmaps.
    imageListSmall.get_Images().Add(Bitmap.FromFile(
        "C:\\MySmallImage1.bmp"));
    imageListSmall.get_Images().Add(Bitmap.FromFile(
        "C:\\MySmallImage2.bmp"));
    imageListLarge.get_Images().Add(Bitmap.FromFile(
        "C:\\MyLargeImage1.bmp"));
    imageListLarge.get_Images().Add(Bitmap.FromFile(
        "C:\\MyLargeImage2.bmp"));

    //Assign the ImageList objects to the ListView.
    listView1.set_LargeImageList(imageListLarge);
    listView1.set_SmallImageList(imageListSmall);

    // Add the ListView to the control collection.
    this.get_Controls().Add(listView1);
} //CreateMyListView

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen: