Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ListView.ListViewItemSorter propriété

 

Date de publication : novembre 2016

Obtient ou définit le comparateur de tri du contrôle.

Espace de noms:   System.Windows.Forms
Assembly:  System.Windows.Forms (dans System.Windows.Forms.dll)

[BrowsableAttribute(false)]
public IComparer ListViewItemSorter { get; set; }

Valeur de propriété

Type: System.Collections.IComparer

Un IComparer qui représente le comparateur de tri du contrôle.

Le ListViewItemSorter propriété vous permet de spécifier l’objet qui effectue le tri des éléments dans un ListView contrôler quand le Sort méthode est appelée ou lorsque des éléments sont ajoutés à la liste. Notez que les éléments ne sont pas triés automatiquement lorsque leur texte d’étiquette change.

L’objet spécifié doit être une instance d’une classe qui implémente le IComparer interface, ce qui a une méthode unique appelée Comparer.Compare.

Vous pouvez utiliser cette propriété pour fournir un tri personnalisé, par exemple, lorsque l’utilisateur clique sur un en-tête de colonne dans la vue Détails. Pour ce faire, créez une classe qui implémente le IComparer de l’interface et fournit un constructeur qui accepte l’index d’une colonne à trier. Vous pouvez ensuite implémenter un gestionnaire pour le ColumnClick événement qui crée une instance de cette classe à l’aide de l’index de la colonne sélectionnée. Lorsque vous définissez la ListViewItemSorter propriété vers la nouvelle instance, le ListView contrôle est automatiquement trié à l’aide de l’objet spécifié. Les appels suivants à la Sort méthode utilisent le même objet.

System_CAPS_noteRemarque

Lorsque vous définissez la valeur de la ListViewItemSorter propriété, la Sort méthode est appelée automatiquement.

L’exemple de code suivant crée un formulaire qui contient un ListView contrôle qui trie manuellement les éléments lorsqu’une colonne dans la ListView est activé. L’exemple définit une classe appelée ListViewItemComparer qui implémente le System.Collections.IComparer interface qui effectue la ListViewItem comparaison. L’exemple crée une instance de ListViewItemComparer et l’utilise pour définir le ListViewItemSorter propriété de la ListView contrôle. Le Sort l’appel de méthode le ColumnClick Gestionnaire d’événements utilise les méthodes définies dans ListViewItemComparer pour trier les éléments, en fonction de la colonne qui est activée.

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);
        }
    }

}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: