Acceder à un item d'un listviewgroup [Résolu]

Signaler
Messages postés
37
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2010
-
Messages postés
37
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2010
-
Bonjour,

j'ai un souci d'accès aux items d'un group d'une listview.
En fait, je voudrais que si le 1° item du group n'est pas sélectionner (par la check box) que tous les autres items soient déselectionnés.
Seulement quand je tente d'accéder au premier item j'ai une exception sur l'index. qui me dit que je suis sur l'index -1 O_o

internal static void verifOption(ListViewXml liste)
{
    int nbitem = liste.Items.Count;
    foreach (ListViewGroup group in liste.Groups)
   {
      if (group.Header.ToLower().Contains("sectiongroup") ||
          group.Header.ToLower().Contains("logger") ||
          group.Header.ToLower().Contains("appender"))
      {
         if (!group.Items[0].Checked)
              foreach (ListViewItem item in group.Items)
                 item.Checked = false;
       }
    }
}

1 réponse

Messages postés
37
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2010

 /// <summary>
        /// On va regarder pour certain group si leur 1° option est décoché.
        /// Si elle l'est, on décoche alors toute les autres automatiquement du même group.
        /// </summary>
        ///

        internal static void verifOption(ListViewXml liste)
        {
            int nbItemAvecGroup = 0;
            int nbItemSansGroup = liste.Items.Count;

            // on calcul le nombre d'item qui ne sont pas dans un group.
            foreach (ListViewGroup group in liste.Groups)
                nbItemSansGroup -= group.Items.Count;

            for (int numgroup = 0; numgroup < liste.Groups.Count; numgroup++)
            {
                nbItemAvecGroup += liste.Groups[numgroup].Items.Count;
                #region sectiongroup
                /* On regarde pour chaque groups s'il est d'un certain type
                 * Ensuite on décoché les option si la 1° valeur est décoché
                 */
                if (liste.Groups[numgroup].Header.ToLower().Contains("sectiongroup") ||
                    liste.Groups[numgroup].Header.ToLower().Contains("logger") ||
                    liste.Groups[numgroup].Header.ToLower().Contains("appender"))
                {
                    /* le calcul se fait grace le nombre total croissant d'item dans le group,
                     * le nombre d'item du group, et le npbre d'item qui ne sont pas présent dans aucun group
                     */
                    if (!liste.Items[nbItemAvecGroup - liste.Groups[numgroup].Items.Count + nbItemSansGroup].Checked)
                        foreach (ListViewItem item in liste.Groups[numgroup].Items)
                        {
                            if (item.Index != -1)
                                item.Checked = false;
                        }
                }
                #endregion sectiongroup
            }
        }