public void RefreshIscrizioni() { if (persona == null || !searchCambiaQualcosa()) { return; } //panelIscrizioni.SuspendLayout(); List <Iscrizione> ordered = persona.Iscrizioni /*.OrderByDescending(x => x.Saldato) */.OrderByDescending(x => x.corso.DataInizio).ToList(); // per ogni panel while (panelIscrizioni.Controls.Count > 0) { var controltoremove = panelIscrizioni.Controls[0]; panelIscrizioni.Controls.Remove(controltoremove); // eliminalo controltoremove.Dispose(); } foreach (Iscrizione i in ordered) { if (!violaCriteriRicercaIscrizioni(i)) { PanelIscrizione pi = new PanelIscrizione(); pi.setIscrizione(i, mainform, this); pi.Dock = DockStyle.Fill; TabPage tp = new TabPage(i.corso.Descrizione); tp.Controls.Add(pi); panelIscrizioni.TabPages.Add(tp); } } //panelIscrizioni.ResumeLayout(); }
public void Save() { UpdatePersona(); DB.instance.save(persona); foreach (TabPage page in panelIscrizioni.TabPages) { foreach (Control control in page.Controls) { if (control is PanelIscrizione) { PanelIscrizione p = control as PanelIscrizione; try { p.Save(); } catch { } } } } }
private bool searchCambiaQualcosa() { List <Iscrizione> processed = new List <Iscrizione>(); foreach (Control c in panelIscrizioni.Controls) { // se non si riesce a convertire PanelIscrizione pi = c as PanelIscrizione; if (pi == null) { return(true); } // se ora l'iscrizione non deve più essere visualizzata if (violaCriteriRicercaIscrizioni(pi.iscrizione)) { return(true); } // se l'iscrizione non esiste più if (!persona.Iscrizioni.Contains(pi.iscrizione)) { return(true); } processed.Add(pi.iscrizione); } foreach (Iscrizione i in persona.Iscrizioni) { if (!processed.Contains(i) && !violaCriteriRicercaIscrizioni(i)) // c'è nei controlli, e ora non viola i criteri { return(true); } } return(false); }