public MdiMain()
            {
                Data = "MdiMain";

                IsMdiContainer = true;

                workerApp = new WorkerApp()
                {
                    Visible = false
                };

                menu = new MenuBar(new MenuBarItem [] {
                    new MenuBarItem("_Options", new MenuItem [] {
                        new MenuItem("_Run Worker", "", () => workerApp.RunWorker(), null, null, Key.CtrlMask | Key.R),
                        new MenuItem("_Cancel Worker", "", () => workerApp.CancelWorker(), null, null, Key.CtrlMask | Key.C),
                        null,
                        new MenuItem("_Quit", "", () => Quit(), null, null, Key.CtrlMask | Key.Q)
                    }),
                    new MenuBarItem("_View", new MenuItem [] { }),
                    new MenuBarItem("_Window", new MenuItem [] { })
                });
                menu.MenuOpening += Menu_MenuOpening;
                Add(menu);

                var statusBar = new StatusBar(new [] {
                    new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Exit", () => Quit()),
                    new StatusItem(Key.CtrlMask | Key.R, "~^R~ Run Worker", () => workerApp.RunWorker()),
                    new StatusItem(Key.CtrlMask | Key.C, "~^C~ Cancel Worker", () => workerApp.CancelWorker())
                });

                Add(statusBar);

                Activate   += MdiMain_Activate;
                Deactivate += MdiMain_Deactivate;

                Closed += MdiMain_Closed;

                Application.Iteration += () => {
                    if (canOpenWorkerApp && !workerApp.Running && Application.MdiTop.Running)
                    {
                        Application.Run(workerApp);
                    }
                };
            }