public bool Add(BaseForm form) { if (_forms_list.Contains(form)) { return(false); } EventHandler <CancelFormEventArgs> adding; EventHandler <FormEventArgs> added; lock (_lock_obj) { adding = _form_adding; added = _form_added; } if (adding != null) { CancelFormEventArgs args = new CancelFormEventArgs(form); bool cancel = false; foreach (EventHandler <CancelFormEventArgs> handler in adding.GetInvocationList()) { args.Cancel = false; handler(this, args); cancel |= args.Cancel; } if (cancel) { return(false); } } _forms_list.Add(form); if (added != null) { added(this, new FormEventArgs(form)); } return(true); }
public bool Remove(BaseForm form) { if (!_forms_list.Contains(form)) { return(false); } EventHandler <CancelFormEventArgs> removing; EventHandler <FormEventArgs> removed; lock (_lock_obj) { removing = _form_removing; removed = _form_removed; } if (removing != null) { CancelFormEventArgs args = new CancelFormEventArgs(form); bool cancel = false; foreach (EventHandler <CancelFormEventArgs> handler in removing.GetInvocationList()) { args.Cancel = false; handler(this, args); cancel |= args.Cancel; } if (cancel) { return(false); } } _forms_list.Remove(form); if (removed != null) { removed(this, new FormEventArgs(form)); } bool exit = true; foreach (BaseForm item in _forms_list) { exit &= !item.Visible; } if (exit) { Application.ExitThread(); //Application.Exit(); } return(true); }