/**
         *  CreateTopLevelWindow implements creating a new form. This is the real 'constructor'.
         *  First, we check if the fileName matches any of the Open Forms in the MultiSDIApplication. If it
         *  does, we just activate that form. If it doesn't we create a new one using OpenFile, a method found
         *  in this class (TopLevelForm) to open a file, then we activate the new window.
         */
        public static TopLevelForm CreateTopLevelWindow(string fileName)
        {
            // If fileName is not empty
            if (!string.IsNullOrEmpty(fileName))
            {
                // Loop through the open forms in MultiSDIApplication
                foreach (TopLevelForm openForm in Application.OpenForms)
                {
                    // If the file we're trying to open is already open, i.e. file names match
                    if (string.Compare(openForm.fileName, fileName, true) == 0)
                    {
                        // Bring form to top
                        openForm.Activate();
                        return(openForm);
                    }
                }
            }

            // Otherwise, create a new one with the given fileName
            TopLevelForm form = new TopLevelForm();

            form.OpenFile(fileName);
            form.Show();

            // Bring form to top
            form.Activate();
            return(form);
        }
        /**
         *  CreateTopLevelWindow helper method. Parses the command line args and grabs the file name, then passes the file
         *  name to TopLevelForm's CreateTopLevelWindow method to create a Top Level Window with the given file name.
         */
        TopLevelForm CreateTopLevelWindow(ReadOnlyCollection <string> args)
        {
            // Get file name, if provided
            string fileName = (args.Count > 0 ? args[0] : null);

            // Create new top level form
            return(TopLevelForm.CreateTopLevelWindow(fileName));
        }
 private void openToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (OpenFileDialog dlg = new OpenFileDialog())
     {
         if (dlg.ShowDialog() != DialogResult.OK)
         {
             return;
         }
         using (Stream stream =
                    new FileStream(dlg.FileName, FileMode.Open, FileAccess.Read))
         {
             IFormatter   formatter = new BinaryFormatter();
             Document     document  = (Document)formatter.Deserialize(stream);
             TopLevelForm form      = CreateTopLevelWindow(dlg.FileName);
             form.doc  = document;
             form.Text = dlg.FileName;
         }
     }
 }