/// <summary>
        /// Evénement lors du clic sur le bouton Ajout Eleve
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddEleve_Click(object sender, EventArgs e)
        {
            int _numElement;
            int _lastSelected = 0;
            InfosClasse _infoClass = (InfosClasse)cmbClasse.SelectedItem;
            // Si la classe est nulle on est dans le cas d'une création sans liste
            if (_infoClass == null) { _infoClass = new InfosClasse(); }

            switch (tabPriseDeVue.SelectedIndex)
            {
                case 0:
                    // On ajoute une Person
                    Person _newPerson = new Person();
                    _newPerson.Class = _infoClass.nameClass;
                    _newPerson.ClassId = _infoClass.idClass;
                    // Si la classe est toppé come gratuite, on ajoute tous les éléments en Gratuit
                    if (_infoClass.allGratis) { _newPerson.InfosPDV.IsGratis = true; }
                    _newPerson.TypePerson = Constantes.cstEleve;   // Par défaut, on crée un élève
                    int _maxId = ClassOutils.getMaxId(p_applClass.School.getListFromType(Constantes.cstIndividu));
                    _newPerson.Id = _maxId.ToString("D4");
                    _numElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement);
                    _newPerson.NumElement = _numElement;
                    _newPerson.Name = "E" + _numElement.ToString("D4");
                    _newPerson.FirstName = String.Empty;
                    ListePersons.frmEditIndividu frmEdit = new ListePersons.frmEditIndividu(_newPerson, p_applClass.School, ModeAppel.Create);
                    if (frmEdit.ShowDialog(this) == DialogResult.OK)
                    {
                        // On ajoute le Groupe dans la Session.
                        // Il faut aussi l'ajouter dans la liste des éléments
                        p_applClass.School.ListElement.Add(_newPerson);
                        p_applClass.School.IsChanged = true;
                        ClassOutils.saveSchoolFile(p_applClass);
                        p_SessionBase.Content.ListElement.Add(_newPerson);

                        // Dans le cas où on est en double vue on duplique l'élément
                        if (p_applClass.School.DoubleView && p_SessionBase.Content.TypeSession == Constantes.cstIndividu)
                        {
                            _maxId++;
                            IElement _newElement = (IElement)_newPerson.Clone();
                            _newElement.Id = _newPerson.Id + "B";
                            _newElement.FirstName += "(BIS)";
                            _newElement.Photos = new List<FilePhoto>();
                            _newElement.InfosPDV = new InfoPdV();
                            p_SessionBase.Content.ListElement.Add(_newElement);
                        }
                        // Il faut trier la liste pour etre cohérent à la liste affichée
                        p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList();
                        _lastSelected = this.searchElement(_newPerson);
                        this.ClearListe();
                        this.ChargeListe(p_SessionBase.Content.ListElement);
                    }
                    break;
                case 1:
                    // On ajoute un Group
                    Group _newGroup = new Group();
                    _newGroup.Class = _infoClass.nameClass;
                    _newGroup.ClassId = _infoClass.idClass;
                    // Si la classe est toppé come gratuite, on ajoute tous les éléments en Gratuit
                    if (_infoClass.allGratis) { _newGroup.InfosPDV.IsGratis = true; }
                    _newGroup.TypePerson = Constantes.cstGroup;   // Par défaut, on crée un élève
                    int _maxGrpId = ClassOutils.getMaxId(p_SessionBase.Content.ListElement);
                    _newGroup.NumElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement);
                    _newGroup.Id = _maxGrpId.ToString("D4");
                    _newGroup.Name = "G" + _newGroup.NumElement.ToString("D4");
                    _newGroup.FirstName = String.Empty;
                    ListePersons.frmEditGroupe frmEditGrp = new ListePersons.frmEditGroupe(_newGroup, p_applClass.School, ModeAppel.Create);
                    if (frmEditGrp.ShowDialog(this) == DialogResult.OK)
                    {
                        // On ajoute le Groupe dans la Session.
                        // Il faut aussi l'ajouter dans la liste des éléments
                        p_applClass.School.ListElement.Add(_newGroup);
                        p_applClass.School.IsChanged = true;
                        ClassOutils.saveSchoolFile(p_applClass);
                        p_SessionBase.Content.ListElement.Add(_newGroup);
                        // Il faut trier la liste pour etre cohérent à la liste affichée
                        p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList();
                        _lastSelected = this.searchElement(_newGroup);
                        this.ClearListe();
                        this.ChargeListe(p_SessionBase.Content.ListElement);
                    }
                    break;
                case 2:
                    // On ajoute une Fratrie
                    Person _newFratrie = new Person();
                    _newFratrie.Class = Constantes.cstFratrie;
                    _newFratrie.ClassId = 99999;
                    _newFratrie.TypePerson = Constantes.cstEleve;   // Une Fratrie est un Elève
                    int _maxFraId = ClassOutils.getMaxId(p_SessionBase.Content.ListElement);
                    _newFratrie.NumElement = ClassOutils.getMaxNumElement(p_SessionBase.Content.ListElement);
                    _newFratrie.Id = _maxFraId.ToString("D4");
                    _newFratrie.Name = "F" + _newFratrie.NumElement.ToString("D4");
                    _newFratrie.FirstName = String.Empty;
                    ListePersons.frmEditGroupe frmEditFratrie = new ListePersons.frmEditGroupe(_newFratrie, p_applClass.School, ModeAppel.Create);
                    if (frmEditFratrie.ShowDialog(this) == DialogResult.OK)
                    {
                        // On ajoute le Groupe dans la Session.
                        // Il faut aussi l'ajouter dans la liste des éléments
                        p_applClass.School.ListElement.Add(_newFratrie);
                        p_applClass.School.IsChanged = true;
                        ClassOutils.saveSchoolFile(p_applClass);
                        p_SessionBase.Content.ListElement.Add(_newFratrie);
                        // Il faut trier la liste pour etre cohérent à la liste affichée
                        p_SessionBase.Content.ListElement = p_SessionBase.Content.ListElement.OrderBy(o => o.KeyAsc).ToList();
                        _lastSelected = this.searchElement(_newFratrie);
                        this.ClearListe();
                        this.ChargeListe(p_SessionBase.Content.ListElement);
                    }
                    break;
            }
            if (lstPupils.Items.Count > 0)
            {
                lstPupils.Items[_lastSelected].Selected = true;
                lstPupils.Items[_lastSelected].EnsureVisible();
            }
            this.actualiseCompteurs();
        }
 /// <summary>
 /// Modifier un élément dans la liste
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void modifyItemMenu_Click(object sender, EventArgs e)
 {
     IElement _selectedItem = (IElement)ctxItemMenu.Tag;
     Form frmEdit;
     if (_selectedItem.TypeElement.Equals(Constantes.cstIndividu))
     {
         frmEdit = new ListePersons.frmEditIndividu(_selectedItem, p_applClass.School, ModeAppel.Update);
     }
     else
     {
         frmEdit = new ListePersons.frmEditGroupe(_selectedItem, p_applClass.School, ModeAppel.Append);
     }
     if (frmEdit.ShowDialog(this) == DialogResult.OK)
     {
         lstPupils.BeginUpdate();
         lstPupils.FocusedItem.SubItems[colFirstName.Index].Text = _selectedItem.GetStringDisplay(colFirstName.Index);
         lstPupils.FocusedItem.SubItems[colName.Index].Text = _selectedItem.GetStringDisplay(colName.Index);
         lstPupils.EndUpdate();
         lstPupils.Refresh();
         p_applClass.School.updateElement(_selectedItem);
         this.RenamePhoto(_selectedItem);
     }
 }