Acceder à un item d'un listviewgroup

Résolu
mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010 - 12 mai 2009 à 17:39
mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010 - 13 mai 2009 à 12:43
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

mastereur Messages postés 37 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 26 décembre 2010
13 mai 2009 à 12:43
 /// <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
            }
        }
3
Rejoignez-nous