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

ListViewGroup classe

 

Date de publication : novembre 2016

Représente un groupe d’éléments affiché dans un ListView contrôle.

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

System.Object
  System.Windows.Forms.ListViewGroup

[SerializableAttribute]
public sealed class ListViewGroup : ISerializable

NomDescription
System_CAPS_pubmethodListViewGroup()

Initialise une nouvelle instance de la ListViewGroup classe en utilisant le texte d’en-tête par défaut de « ListViewGroup » et l’alignement d’en-tête gauche par défaut.

System_CAPS_pubmethodListViewGroup(String)

Initialise une nouvelle instance de la ListViewGroup classe à l’aide de la valeur spécifiée pour initialiser la Header alignement d’en-tête gauche de propriété et l’utilisation de la valeur par défaut.

System_CAPS_pubmethodListViewGroup(String, HorizontalAlignment)

Initialise une nouvelle instance de la ListViewGroup classe à l’aide du texte d’en-tête et l’alignement de l’en-tête spécifié.

System_CAPS_pubmethodListViewGroup(String, String)

Initialise une nouvelle instance de la ListViewGroup classe en utilisant les valeurs spécifiées pour initialiser les Name et Header Propriétés.

NomDescription
System_CAPS_pubpropertyHeader

Obtient ou définit le texte d’en-tête pour le groupe.

System_CAPS_pubpropertyHeaderAlignment

Obtient ou définit l’alignement du texte de l’en-tête de groupe.

System_CAPS_pubpropertyItems

Obtient une collection contenant tous les éléments associés à ce groupe.

System_CAPS_pubpropertyListView

Obtient le ListView contrôle qui contient ce groupe.

System_CAPS_pubpropertyName

Obtient ou définit le nom du groupe.

System_CAPS_pubpropertyTag

Obtient ou définit l’objet qui contient les données relatives au groupe.

NomDescription
System_CAPS_pubmethodEquals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.(Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

Fait office de fonction de hachage par défaut.(Hérité de Object.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Remplace Object.ToString().)

NomDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Remplit SerializationInfo avec les données nécessaires pour sérialiser l'objet cible.

Le ListView fonctionnalité de regroupement vous permet de créer des groupes visuels liés de manière logique ListView éléments. Chaque groupe se compose d’un en-tête textuel suivi d’une ligne horizontale et des éléments assignés à ce groupe. Vous pouvez aligner le texte d’en-tête à gauche, à droite ou au centre du contrôle. Tous les groupes assignés à un ListView contrôle s’affiche chaque fois que le ListView.View propriété est définie sur une valeur autre que View.List.

ListView groupes d’aideront vos utilisateurs à trouver les éléments qu’ils cherchent en divisant les éléments en catégories utiles. Vous pouvez créer les catégories que vous avez besoin. Une façon typique consiste à regrouper les éléments est par le fait qu’ils sont triés. Par exemple, vous pouvez regrouper les éléments par la lettre initiale du nom d’élément lorsqu’ils sont triés par ordre alphabétique, ou par les sous-éléments tels que le type ou la date lorsque la liste est triée en cliquant sur un en-tête de colonne en mode Détails. L’Explorateur Windows utilise ce type de regroupement.

Pour utiliser la fonctionnalité de regroupement, ajoutez un ou plusieurs ListViewGroup des objets dans le ListView.Groups collection d’un ListView contrôle. Définir l’alignement de texte et d’en-tête de l’en-tête groupe dans le ListViewGroup constructeur, ou les définir à l’aide de la Header et HeaderAlignment Propriétés.

Vous pouvez affecter un élément à un groupe en spécifiant le groupe dans le ListViewItem constructeur, en définissant le ListViewItem.Group propriété, ou en ajoutant directement l’élément à la Items regroupement d’un groupe. Tous les éléments doivent être affectés aux groupes avant d’être affichées. Tous les éléments qui ne sont pas attribués à un groupe seront affiche dans le groupe par défaut, qui a le label d’en-tête « DefaultGroup {0} ». Le groupe par défaut n’est pas contenu dans le ListView.Groups collection et ne peut pas être modifié. Il est particulièrement utile lors du débogage pour vous assurer que tous les éléments ont été ajoutés correctement aux groupes.

Un élément peut être uniquement dans un groupe à la fois. Vous pouvez modifier le groupe auquel un élément appartient en définissant le ListViewItem.Group propriété au moment de l’exécution ou en l’ajoutant à la Items regroupement d’un autre groupe, ce qui le supprime automatiquement du groupe précédent.

System_CAPS_noteRemarque

La fonctionnalité de marque d’insertion est désactivée lors de l’utilisation de groupes. C’est parce que la fonctionnalité de regroupement trie les éléments par appartenance aux groupes, tandis que la fonctionnalité de marque d’insertion est utilisée avec le repositionnement de glisser-déplacer dans un ListView contrôle qui ne pas en ordre ses éléments.

System_CAPS_noteRemarque

ListView les groupes sont disponibles uniquement sur Windows XP et la famille Windows Server 2003 lorsque votre application appelle la Application.EnableVisualStyles méthode. Sur les systèmes d’exploitation antérieurs, tout code concernant les groupes sera ignoré et les groupes n’apparaîtra pas. Par conséquent, tout code qui dépend de la fonctionnalité de regroupement peuvent ne pas fonctionne correctement. Vous pouvez inclure un test qui détermine si la fonctionnalité de regroupement est disponible et fournir d’autres fonctionnalités lorsqu’il n’est pas disponible. Par exemple, vous souhaiterez fournir un tri de remplacement lors de l’exécution sur les systèmes d’exploitation qui ne prennent pas en charge le tri par groupe.

La fonctionnalité de marque d’insertion est fournie par la même bibliothèque qui fournit la fonctionnalité des thèmes du système d’exploitation. Pour vérifier la disponibilité de cette bibliothèque, appelez le FeatureSupport.IsPresent(Object) la surcharge de méthode et transmettez la OSFeature.Themes valeur.

L’exemple de code suivant montre comment utiliser le ListView fonctionnalité de regroupement pour organiser des éléments par valeur de sous-élément en mode Détails. Cette forme de regroupement est semblable au regroupement utilisé dans l’Explorateur Windows. Dans l’exemple, les groupes sont créés dynamiquement. Pour chaque colonne de sous-élément, un groupe est créé pour chaque valeur de sous-élément unique. Pour la colonne élément parent, un groupe est créé pour chaque initiale unique. En cliquant sur l’en-tête d’une colonne trie les éléments dans les groupes créés pour cette colonne. Cliquez à nouveau sur le même en-tête de colonne inverse l’ordre des groupes.

using System;
using System.Collections; 
using System.Windows.Forms;

public class ListViewGroupsExample : Form
{
    private ListView myListView;

    // Determine whether Windows XP or a later
    // operating system is present.
    private bool isRunningXPOrLater = 
        OSFeature.Feature.IsPresent(OSFeature.Themes);

    // Declare a Hashtable array in which to store the groups.
    private Hashtable[] groupTables;

    // Declare a variable to store the current grouping column.
    int groupColumn = 0;

    public ListViewGroupsExample()
    {
        // Initialize myListView.
        myListView = new ListView();
        myListView.Dock = DockStyle.Fill;
        myListView.View = View.Details;
        myListView.Sorting = SortOrder.Ascending;

        // Create and initialize column headers for myListView.
        ColumnHeader columnHeader0 = new ColumnHeader();
        columnHeader0.Text = "Title";
        columnHeader0.Width = -1;
        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.Text = "Author";
        columnHeader1.Width = -1;
        ColumnHeader columnHeader2 = new ColumnHeader();
        columnHeader2.Text = "Year";
        columnHeader2.Width = -1;

        // Add the column headers to myListView.
        myListView.Columns.AddRange(new ColumnHeader[] 
            {columnHeader0, columnHeader1, columnHeader2});

        // Add a handler for the ColumnClick event.
        myListView.ColumnClick += 
            new ColumnClickEventHandler(myListView_ColumnClick);

        // Create items and add them to myListView.
        ListViewItem item0 = new ListViewItem( new string[] 
            {"Programming Windows", 
            "Petzold, Charles", 
            "1998"} );
        ListViewItem item1 = new ListViewItem( new string[] 
            {"Code: The Hidden Language of Computer Hardware and Software", 
            "Petzold, Charles", 
            "2000"} );
        ListViewItem item2 = new ListViewItem( new string[] 
            {"Programming Windows with C#", 
            "Petzold, Charles", 
            "2001"} );
        ListViewItem item3 = new ListViewItem( new string[] 
            {"Coding Techniques for Microsoft Visual Basic .NET", 
            "Connell, John", 
            "2001"} );
        ListViewItem item4 = new ListViewItem( new string[] 
            {"C# for Java Developers", 
            "Jones, Allen & Freeman, Adam", 
            "2002"} );
        ListViewItem item5 = new ListViewItem( new string[] 
            {"Microsoft .NET XML Web Services Step by Step", 
            "Jones, Allen & Freeman, Adam", 
            "2002"} );
        myListView.Items.AddRange(
            new ListViewItem[] {item0, item1, item2, item3, item4, item5});

        if (isRunningXPOrLater)
        {
            // Create the groupsTable array and populate it with one 
            // hash table for each column.
            groupTables = new Hashtable[myListView.Columns.Count];
            for (int column = 0; column < myListView.Columns.Count; column++)
            {
                // Create a hash table containing all the groups 
                // needed for a single column.
                groupTables[column] = CreateGroupsTable(column);
            }

            // Start with the groups created for the Title column.
            SetGroups(0);
        }

        // Initialize the form.
        this.Controls.Add(myListView);
        this.Size = new System.Drawing.Size(550, 330);
        this.Text = "ListView Groups Example";
    }

    [STAThread]
    static void Main() 
    {
        Application.EnableVisualStyles();
        Application.Run(new ListViewGroupsExample());
    }

    // Groups the items using the groups created for the clicked 
    // column.
    private void myListView_ColumnClick(
        object sender, ColumnClickEventArgs e)
    {
        // Set the sort order to ascending when changing
        // column groups; otherwise, reverse the sort order.
        if ( myListView.Sorting == SortOrder.Descending || 
            ( isRunningXPOrLater && (e.Column != groupColumn) ) )
        {
            myListView.Sorting = SortOrder.Ascending;
        }
        else 
        {
            myListView.Sorting = SortOrder.Descending;
        }
        groupColumn = e.Column;

        // Set the groups to those created for the clicked column.
        if (isRunningXPOrLater)
        {
            SetGroups(e.Column);
        }
    }

    // Sets myListView to the groups created for the specified column.
    private void SetGroups(int column)
    {
        // Remove the current groups.
        myListView.Groups.Clear();

        // Retrieve the hash table corresponding to the column.
        Hashtable groups = (Hashtable)groupTables[column];

        // Copy the groups for the column to an array.
        ListViewGroup[] groupsArray = new ListViewGroup[groups.Count];
        groups.Values.CopyTo(groupsArray, 0);

        // Sort the groups and add them to myListView.
        Array.Sort(groupsArray, new ListViewGroupSorter(myListView.Sorting));
        myListView.Groups.AddRange(groupsArray);

        // Iterate through the items in myListView, assigning each 
        // one to the appropriate group.
        foreach (ListViewItem item in myListView.Items)
        {
            // Retrieve the subitem text corresponding to the column.
            string subItemText = item.SubItems[column].Text;

            // For the Title column, use only the first letter.
            if (column == 0) 
            {
                subItemText = subItemText.Substring(0, 1);
            }

            // Assign the item to the matching group.
            item.Group = (ListViewGroup)groups[subItemText];
        }
    }

    // Creates a Hashtable object with one entry for each unique
    // subitem value (or initial letter for the parent item)
    // in the specified column.
    private Hashtable CreateGroupsTable(int column)
    {
        // Create a Hashtable object.
        Hashtable groups = new Hashtable();

        // Iterate through the items in myListView.
        foreach (ListViewItem item in myListView.Items)
        {
            // Retrieve the text value for the column.
            string subItemText = item.SubItems[column].Text;

            // Use the initial letter instead if it is the first column.
            if (column == 0) 
            {
                subItemText = subItemText.Substring(0, 1);
            }

            // If the groups table does not already contain a group
            // for the subItemText value, add a new group using the 
            // subItemText value for the group header and Hashtable key.
            if (!groups.Contains(subItemText))
            {
                groups.Add( subItemText, new ListViewGroup(subItemText, 
                    HorizontalAlignment.Left) );
            }
        }

        // Return the Hashtable object.
        return groups;
    }

    // Sorts ListViewGroup objects by header value.
    private class ListViewGroupSorter : IComparer
    {
        private SortOrder order;

        // Stores the sort order.
        public ListViewGroupSorter(SortOrder theOrder) 
        { 
            order = theOrder;
        }

        // Compares the groups by header value, using the saved sort
        // order to return the correct value.
        public int Compare(object x, object y)
        {
            int result = String.Compare(
                ((ListViewGroup)x).Header,
                ((ListViewGroup)y).Header
            );
            if (order == SortOrder.Ascending)
            {
                return result;
            }
            else 
            {
                return -result;
            }
        }
    }

}

.NET Framework
Disponible depuis 2.0

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: