>using System; >using System.Collections; >using System.Windows.Forms; > >namespace MyNameSpace.MyClasses >{ > public class FormsHandler > { > #region Declarations > private static ArrayList list = new ArrayList(); > #endregion > > #region Methods > public static int Add(object o) > { > return list.Add(o); > } > public static void Remove(object o) > { > list.Remove(o); > } > public static bool Close() > { > int nCount = list.Count; > while (list.Count > 0) > { > ((Form)list[0]).Close(); > if (list.Count == nCount) > return false; > else > nCount = list.Count; > } > > return true; > } > #endregion > > #region Properties > public static ArrayList List > { > get {return list;} > } > #endregion > } >} >>Whenever you open a form, no matter where you open it from, all you do is add it to the ArrayList, like this:
>Form oForm = new MyForm();
>FormsHandler.Add(oForm);
>oForm.Show();
>
>When you close your Main Form, you want all other's to Close (but to execute their own Closing methods) ... do it like this:>// This is a menu item that exits the application > >private void menuItem4_Click(object sender, System.EventArgs e) >{ > System.ComponentModel.CancelEventArgs ee = new CancelEventArgs(); > this.ClosingHandler(sender, ee); >} > >// This is the ClosingHandler that will execute normally if you close the app >// by clicking on the "X" > >private void ClosingHandler(object sender, System.ComponentModel.CancelEventArgs e) >{ > if (!FormsHandler.Close()) > e.Cancel = true; > else > Application.Exit(); >} > >>
_Screen.oApp.oWindows.LaunchForm("SomeFormClass", p1, p2, ...)
>>