Freigeben über


ListView.ListViewItemSorter-Eigenschaft

Ruft den Sortiervergleich für das Steuerelement ab oder legt diesen fest.

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

Syntax

'Declaration
Public Property ListViewItemSorter As IComparer
'Usage
Dim instance As ListView
Dim value As IComparer

value = instance.ListViewItemSorter

instance.ListViewItemSorter = value
public IComparer ListViewItemSorter { get; set; }
public:
property IComparer^ ListViewItemSorter {
    IComparer^ get ();
    void set (IComparer^ value);
}
/** @property */
public IComparer get_ListViewItemSorter ()

/** @property */
public void set_ListViewItemSorter (IComparer value)
public function get ListViewItemSorter () : IComparer

public function set ListViewItemSorter (value : IComparer)

Eigenschaftenwert

Ein IComparer, der den Sortiervergleich für das Steuerelement darstellt.

Hinweise

Mit der ListViewItemSorter-Eigenschaft können Sie das Objekt angeben, das die Sortierung von Elementen in einem ListView-Steuerelement ausführt, wenn die Sort-Methode aufgerufen wird oder wenn der Liste Elemente hinzugefügt werden. Beachten Sie, dass Elemente nicht automatisch sortiert werden, wenn ihr Bezeichnungstext geändert wird.

Das angegebene Objekt muss eine Instanz einer Klasse sein, die die IComparer-Schnittstelle implementiert, die nur die Comparer.Compare-Methode enthält.

Mit dieser Eigenschaft können Sie benutzerdefinierte Sortierungen bereitstellen, z. B., wenn in der Detailansicht auf einen Spaltenkopf geklickt wird. Erstellen Sie dazu eine Klasse, die die IComparer-Schnittstelle implementiert und einen Konstruktor bereitstellt, dem der Index der Spalte übergeben wird, nach der sortiert werden soll. Danach können Sie einen Handler für das ColumnClick-Ereignis implementieren, der unter Verwendung des Indexes der Spalte, auf die geklickt wird, eine Instanz dieser Klasse erstellt. Beim Festlegen der ListViewItemSorter-Eigenschaft auf die neue Instanz wird das ListView-Steuerelement mithilfe des angegebenen Objekts automatisch sortiert. Bei nachfolgenden Aufrufen der Sort-Methode wird dasselbe Objekt verwendet.

Hinweis

Beim Festlegen des Werts der ListViewItemSorter-Eigenschaft wird die Sort-Methode automatisch aufgerufen.

Beispiel

Im folgenden Codebeispiel wird ein Formular mit einem ListView-Steuerelement erstellt, das Elemente manuell sortiert, wenn auf eine Spalte im ListView-Steuerelement geklickt wird. Im Beispiel wird die ListViewItemComparer-Klasse definiert, die die System.Collections.IComparer-Schnittstelle implementiert, die den ListViewItem-Vergleich durchführt. Im folgenden Beispiel wird eine Instanz von ListViewItemComparer erstellt und zum Festlegen der ListViewItemSorter-Eigenschaft des ListView-Steuerelements verwendet. Der Sort-Methodenaufruf im ColumnClick-Ereignishandler verwendet die in ListViewItemComparer definierten Methoden, um die Elemente nach der Spalte zu sortieren, auf die geklickt wird.

Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections


Namespace ListViewSortFormNamespace

    Public Class ListViewSortForm
        Inherits Form

        Private listView1 As ListView

        Public Sub New()
            ' Create ListView items to add to the control.
            Dim listViewItem1 As New ListViewItem(New String() {"Banana", "a", "b", "c"}, -1, Color.Empty, Color.Yellow, Nothing)
            Dim listViewItem2 As New ListViewItem(New String() {"Cherry", "v", "g", "t"}, -1, Color.Empty, Color.Red, New Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, CType(0, System.Byte)))
            Dim listViewItem3 As New ListViewItem(New String() {"Apple", "h", "j", "n"}, -1, Color.Empty, Color.Lime, Nothing)
            Dim listViewItem4 As New ListViewItem(New String() {"Pear", "y", "u", "i"}, -1, Color.Empty, Color.FromArgb(CType(192, System.Byte), CType(128, System.Byte), CType(156, System.Byte)), Nothing)

            'Initialize the ListView control and add columns to it.
            Me.listView1 = New ListView

            ' Set the initial sorting type for the ListView.
            Me.listView1.Sorting = SortOrder.None
            ' Disable automatic sorting to enable manual sorting.
            Me.listView1.View = View.Details
            ' Add columns and set their text.
            Me.listView1.Columns.Add(New ColumnHeader)
            Me.listView1.Columns(0).Text = "Column 1"
            Me.listView1.Columns(0).Width = 100
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(1).Text = "Column 2"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(2).Text = "Column 3"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(3).Text = "Column 4"
            ' Suspend control logic until form is done configuring form.
            Me.SuspendLayout()
            ' Add Items to the ListView control.
            Me.listView1.Items.AddRange(New ListViewItem() {listViewItem1, listViewItem2, listViewItem3, listViewItem4})
            ' Set the location and size of the ListView control.
            Me.listView1.Location = New Point(10, 10)
            Me.listView1.Name = "listView1"
            Me.listView1.Size = New Size(300, 100)
            Me.listView1.TabIndex = 0
            ' Enable editing of the items in the ListView.
            Me.listView1.LabelEdit = True
            ' Connect the ListView.ColumnClick event to the ColumnClick event handler.
            AddHandler Me.listView1.ColumnClick, AddressOf ColumnClick

            ' Initialize the form.
            Me.ClientSize = New Size(400, 400)
            Me.Controls.AddRange(New Control() {Me.listView1})
            Me.Name = "ListViewSortForm"
            Me.Text = "Sorted ListView Control"
            ' Resume layout of the form.
            Me.ResumeLayout(False)
        End Sub 'New


        ' ColumnClick event handler.
        Private Sub ColumnClick(ByVal o As Object, ByVal e As ColumnClickEventArgs)
            ' Set the ListViewItemSorter property to a new ListViewItemComparer 
            ' object. Setting this property immediately sorts the 
            ' ListView using the ListViewItemComparer object.
            Me.listView1.ListViewItemSorter = New ListViewItemComparer(e.Column)
        End Sub

    End Class

    ' Implements the manual sorting of items by columns.
    Class ListViewItemComparer
        Implements IComparer

        Private col As Integer

        Public Sub New()
            col = 0
        End Sub

        Public Sub New(ByVal column As Integer)
            col = column
        End Sub

        Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
           Implements IComparer.Compare
            Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
        End Function
    End Class
End Namespace
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;

namespace ListViewSortFormNamespace
{
    
   
    public class ListViewSortForm : Form
    {
        private ListView listView1;
       
        public ListViewSortForm()
        {
            // Create ListView items to add to the control.
            ListViewItem listViewItem1 = new ListViewItem(new string[] {"Banana","a","b","c"}, -1, Color.Empty, Color.Yellow, null);
            ListViewItem listViewItem2 = new ListViewItem(new string[] {"Cherry","v","g","t"}, -1, Color.Empty, Color.Red, new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((System.Byte)(0))));
            ListViewItem listViewItem3 = new ListViewItem(new string[] {"Apple","h","j","n"}, -1, Color.Empty, Color.Lime, null);
            ListViewItem listViewItem4 = new ListViewItem(new string[] {"Pear","y","u","i"}, -1, Color.Empty, Color.FromArgb(((System.Byte)(192)), ((System.Byte)(128)), ((System.Byte)(156))), null);
     
            //Initialize the ListView control and add columns to it.
            this.listView1 = new ListView();

            // Set the initial sorting type for the ListView.
            this.listView1.Sorting = SortOrder.None;
            // Disable automatic sorting to enable manual sorting.
            this.listView1.View = View.Details;
            // Add columns and set their text.
            this.listView1.Columns.Add(new ColumnHeader());
            this.listView1.Columns[0].Text = "Column 1";
            this.listView1.Columns[0].Width = 100;
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[1].Text = "Column 2";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[2].Text = "Column 3";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[3].Text = "Column 4";
            // Suspend control logic until form is done configuring form.
            this.SuspendLayout();
            // Add Items to the ListView control.
            this.listView1.Items.AddRange(new ListViewItem[] {listViewItem1,
                listViewItem2,
                listViewItem3,
                listViewItem4});
            // Set the location and size of the ListView control.
            this.listView1.Location = new Point(10, 10);
            this.listView1.Name = "listView1";
            this.listView1.Size = new Size(300, 100);
            this.listView1.TabIndex = 0;
            // Enable editing of the items in the ListView.
            this.listView1.LabelEdit = true;
            // Connect the ListView.ColumnClick event to the ColumnClick event handler.
            this.listView1.ColumnClick += new ColumnClickEventHandler(ColumnClick);
            
            // Initialize the form.
            this.ClientSize = new Size(400, 400);
            this.Controls.AddRange(new Control[] {this.listView1});
            this.Name = "ListViewSortForm";
            this.Text = "Sorted ListView Control";
            // Resume layout of the form.
            this.ResumeLayout(false);
        }
        
    
        // ColumnClick event handler.
        private void ColumnClick(object o, ColumnClickEventArgs e)
        {
            // Set the ListViewItemSorter property to a new ListViewItemComparer 
            // object. Setting this property immediately sorts the 
            // ListView using the ListViewItemComparer object.
            this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
        }

        [System.STAThreadAttribute()]
        public static void Main()
        {
            Application.Run(new ListViewSortForm());
        }

    }

    // Implements the manual sorting of items by columns.
    class ListViewItemComparer : IComparer
    {
        private int col;
        public ListViewItemComparer()
        {
            col = 0;
        }
        public ListViewItemComparer(int column)
        {
            col = column;
        }
        public int Compare(object x, object y)
        {
            return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
        }
    }

}
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Collections;

// Implements the manual sorting of items by columns.
ref class ListViewItemComparer: public IComparer
{
private:
   int col;

public:
   ListViewItemComparer()
   {
      col = 0;
   }

   ListViewItemComparer( int column )
   {
      col = column;
   }

   virtual int Compare( Object^ x, Object^ y )
   {
      return String::Compare( (dynamic_cast<ListViewItem^>(x))->SubItems[ col ]->Text,
                              (dynamic_cast<ListViewItem^>(y))->SubItems[ col ]->Text );
   }
};

public ref class ListViewSortForm: public Form
{
private:
   ListView^ listView1;

public:
   ListViewSortForm()
   {
      // Create ListView items to add to the control.
      array<String^>^temp0 = {"Banana","a","b","c"};
      ListViewItem^ listViewItem1 = gcnew ListViewItem( temp0,-1,Color::Empty,Color::Yellow,nullptr );
      array<String^>^temp1 = {"Cherry","v","g","t"};
      ListViewItem^ listViewItem2 = gcnew ListViewItem( temp1,-1,Color::Empty,Color::Red,
                 gcnew System::Drawing::Font( "Microsoft Sans Serif",8.25F,FontStyle::Regular,GraphicsUnit::Point,0 ) );
      array<String^>^temp2 = {"Apple","h","j","n"};
      ListViewItem^ listViewItem3 = gcnew ListViewItem( temp2,-1,Color::Empty,Color::Lime,nullptr );
      array<String^>^temp3 = {"Pear","y","u","i"};
      ListViewItem^ listViewItem4 = gcnew ListViewItem( temp3,-1,Color::Empty,Color::FromArgb( 192, 128, 156 ),nullptr );

      //Initialize the ListView control and add columns to it.
      this->listView1 = gcnew ListView;

      // Set the initial sorting type for the ListView.
      this->listView1->Sorting = SortOrder::None;

      // Disable automatic sorting to enable manual sorting.
      this->listView1->View = View::Details;

      // Add columns and set their text.
      this->listView1->Columns->Add( gcnew ColumnHeader );
      this->listView1->Columns[ 0 ]->Text = "Column 1";
      this->listView1->Columns[ 0 ]->Width = 100;
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 1 ]->Text = "Column 2";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 2 ]->Text = "Column 3";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 3 ]->Text = "Column 4";

      // Suspend control logic until form is done configuring form.
      this->SuspendLayout();

      // Add Items to the ListView control.
      array<ListViewItem^>^temp4 = {listViewItem1,listViewItem2,listViewItem3,listViewItem4};
      this->listView1->Items->AddRange( temp4 );

      // Set the location and size of the ListView control.
      this->listView1->Location = Point(10,10);
      this->listView1->Name = "listView1";
      this->listView1->Size = System::Drawing::Size( 300, 100 );
      this->listView1->TabIndex = 0;

      // Enable editing of the items in the ListView.
      this->listView1->LabelEdit = true;

      // Connect the ListView::ColumnClick event to the ColumnClick event handler.
      this->listView1->ColumnClick += gcnew ColumnClickEventHandler( this, &ListViewSortForm::ColumnClick );

      // Initialize the form.
      this->ClientSize = System::Drawing::Size( 400, 400 );
      array<Control^>^temp5 = {this->listView1};
      this->Controls->AddRange( temp5 );
      this->Name = "ListViewSortForm";
      this->Text = "Sorted ListView Control";

      // Resume lay[Out] of* the form.
      this->ResumeLayout( false );
   }

private:

   // ColumnClick event handler.
   void ColumnClick( Object^ /*o*/, ColumnClickEventArgs^ e )
   {
      // Set the ListViewItemSorter property to a new ListViewItemComparer 
      // object. Setting this property immediately sorts the 
      // ListView using the ListViewItemComparer object.
      this->listView1->ListViewItemSorter = gcnew ListViewItemComparer( e->Column );
   }
};

[System::STAThreadAttribute]
int main()
{
   Application::Run( gcnew ListViewSortForm );
}
package ListViewSortFormNamespace;

import System.*;
import System.Windows.Forms.*;
import System.Drawing.*;
import System.Collections.*;

public class ListViewSortForm extends Form
{
    private ListView listView1;

    public ListViewSortForm()
    {
        // Create ListView items to add to the control.
        ListViewItem listViewItem1 = new ListViewItem(new String[] { "Banana", 
            "a", "b", "c" }, -1, Color.Empty, Color.get_Yellow(), null);
        ListViewItem listViewItem2 = new ListViewItem(new String[] { "Cherry", 
            "v", "g", "t" }, -1, Color.Empty, Color.get_Red(), 
            new Font("Microsoft Sans Serif", (float)8.25, FontStyle.Regular, 
            GraphicsUnit.Point, (ubyte)0));
        ListViewItem listViewItem3 = new ListViewItem(new String[] { "Apple", 
            "h", "j", "n" }, -1, Color.Empty, Color.get_Lime(), null);
        ListViewItem listViewItem4 = new ListViewItem(new String[] { "Pear", 
            "y", "u", "i" }, -1, Color.Empty, Color.FromArgb(192, 128, 156), 
            null);

        //Initialize the ListView control and add columns to it.
        this.listView1 = new ListView();

        // Set the initial sorting type for the ListView.
        this.listView1.set_Sorting(SortOrder.None);

        // Disable automatic sorting to enable manual sorting.
        this.listView1.set_View(View.Details);

        // Add columns and set their text.
        this.listView1.get_Columns().Add(new ColumnHeader());
        this.listView1.get_Columns().get_Item(0).set_Text("Column 1");
        this.listView1.get_Columns().get_Item(0).set_Width(100);
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(1).set_Text("Column 2");
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(2).set_Text("Column 3");
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(3).set_Text("Column 4");

        // Suspend control logic until form is done configuring form.
        this.SuspendLayout();

        // Add Items to the ListView control.
        this.listView1.get_Items().AddRange(new ListViewItem[] { listViewItem1,
            listViewItem2, listViewItem3, listViewItem4 });

        // Set the location and size of the ListView control.
        this.listView1.set_Location(new Point(10, 10));
        this.listView1.set_Name("listView1");
        this.listView1.set_Size(new Size(300, 100));
        this.listView1.set_TabIndex(0);

        // Enable editing of the items in the ListView.
        this.listView1.set_LabelEdit(true);

        // Connect the ListView.ColumnClick event to the 
        // ColumnClick event handler.
        this.listView1.add_ColumnClick(new ColumnClickEventHandler(ColumnClick));

        // Initialize the form.
        this.set_ClientSize(new Size(400, 400));
        this.get_Controls().AddRange(new Control[] { this.listView1 });
        this.set_Name("ListViewSortForm");
        this.set_Text("Sorted ListView Control");

        // Resume layout of the form.
        this.ResumeLayout(false);
    } //ListViewSortForm

    // ColumnClick event handler.
    private void ColumnClick(Object o, ColumnClickEventArgs e)
    {
        // Set the ListViewItemSorter property to a new ListViewItemComparer 
        // object. Setting this property immediately sorts the 
        // ListView using the ListViewItemComparer object.
        this.listView1.set_ListViewItemSorter(
            new ListViewItemComparer(e.get_Column()));
    } //ColumnClick

    /** @attribute System.STAThreadAttribute()
     */
    public static void main(String[] args)
    {
        Application.Run(new ListViewSortForm());
    } //main
} //ListViewSortForm

// Implements the manual sorting of items by columns.
class ListViewItemComparer implements IComparer
{
    private int col;

    public ListViewItemComparer()
    {
        col = 0;
    } //ListViewItemComparer

    public ListViewItemComparer(int column)
    {
        col = column;
    } //ListViewItemComparer

    public int Compare(Object x, Object y)
    {
        return String.Compare(
            ((ListViewItem)x).get_SubItems().get_Item(col).get_Text(),
            ((ListViewItem)y).get_SubItems().get_Item(col).get_Text());
    } //Compare
} //ListViewItemComparer

Plattformen

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.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

ListView-Klasse
ListView-Member
System.Windows.Forms-Namespace
IComparer
ColumnClick