/// <summary> /// Suppression d'un Cours pour un Etudiant /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_remove_Click(object sender, EventArgs e) { // A FAIRE : tester si ListBox pas vide, faire les enabled / disabled, ... lbx_nonInscrit.Items.Add(lbx_inscrit.SelectedItem); // le cloner avant de le supprimer (??) => en tout cas, on a besoin d'une nouvelle référence // Data_Cours dc_toInsert = (Data_Cours)lbx_inscrit.SelectedItem; Data_Cours dc_tmp = (Data_Cours)lbx_inscrit.SelectedItem; Data_Cours dc_toRemove = new Data_Cours(dc_tmp.id, dc_tmp.year, dc_tmp.titre); lbx_inscrit.Items.Remove(lbx_inscrit.SelectedItem); // vérifier d'abord si le Cours était dans la pile toInsert (changement d'avis) // et si oui, on le supprime removeFromStack(lst_toInsert, dc_toRemove); // empiler dans toRemove lst_toRemove.Push(dc_toRemove); debug_displayStack(lst_toRemove); }
/// <summary> /// Suppression d'un Cours /// dans une des piles de modification (toInsert ou toDelete) /// </summary> /// <param name="s"></param> /// <param name="dc_toRemove"></param> private void removeFromStack(Stack<Data_Cours> s, Data_Cours dc_toModify) { IEnumerator en = s.GetEnumerator(); Data_Cours dc_current; en.Reset(); // !!!!!!! l'énumérateur ne supporte pas que la collection soit modifiée ! if (dc_toModify != null) { while (en.MoveNext()) { dc_current = (Data_Cours)en.Current; // si dans la pile, on le supprime if (dc_current.id == dc_toModify.id) { s.Pop(); } } } }