using System; using System.Collections; using System.Windows.Forms; namespace MyAppClasses { 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 } }If the first form that you loaded in your application was this special form, then it would always be the first form in your ArrayList and would be easily accessible from anywhere in the app as FormsHandler.List[0].
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(); }~~Bonnie