From 36eb58c4bacc578747023fa6e893281041ea2a00 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Fri, 8 Dec 2017 18:09:20 +0100 Subject: [PATCH] Window handling --- VAR.Toolbox/UI/FrmToolbox.Designer.cs | 2 + VAR.Toolbox/UI/FrmToolbox.cs | 64 ++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/VAR.Toolbox/UI/FrmToolbox.Designer.cs b/VAR.Toolbox/UI/FrmToolbox.Designer.cs index 9ff2373..1dae48c 100644 --- a/VAR.Toolbox/UI/FrmToolbox.Designer.cs +++ b/VAR.Toolbox/UI/FrmToolbox.Designer.cs @@ -75,6 +75,8 @@ this.MaximizeBox = false; this.Name = "FrmToolbox"; this.Text = "Toolbox"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmToolbox_FormClosing); + this.Resize += new System.EventHandler(this.FrmToolbox_Resize); this.ResumeLayout(false); } diff --git a/VAR.Toolbox/UI/FrmToolbox.cs b/VAR.Toolbox/UI/FrmToolbox.cs index fec4574..9d287bf 100644 --- a/VAR.Toolbox/UI/FrmToolbox.cs +++ b/VAR.Toolbox/UI/FrmToolbox.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; namespace VAR.Toolbox.UI @@ -12,20 +13,71 @@ namespace VAR.Toolbox.UI private void btnBase64_Click(object sender, EventArgs e) { - var frmBase64 = new FrmBase64(); - frmBase64.Show(); + CreateWindow(typeof(FrmBase64)); } private void btnProxyCmd_Click(object sender, EventArgs e) { - var frmProxyCmd = new FrmProxyCmd(); - frmProxyCmd.Show(); + CreateWindow(typeof(FrmProxyCmd)); } private void btnWebcam_Click(object sender, EventArgs e) { - var frmWebcam = new FrmWebcam(); - frmWebcam.Show(); + CreateWindow(typeof(FrmWebcam)); } + + #region Window handling + + private Form CreateWindow(Type type) + { + Form frm = Activator.CreateInstance(type) as Form; + if(frm== null) + { + return null; + } + _forms.Add(frm); + frm.FormClosing += frmChild_FormClosing; + frm.Show(); + return frm; + } + + private List
_forms = new List(); + + private void frmChild_FormClosing(object sender, FormClosingEventArgs e) + { + _forms.Remove((Form)sender); + } + + private void FrmToolbox_FormClosing(object sender, FormClosingEventArgs e) + { + while (_forms.Count > 0) + { + _forms[0].Close(); + } + } + + private bool _wasMinimized = false; + + private void FrmToolbox_Resize(object sender, EventArgs e) + { + if (FormWindowState.Minimized == WindowState) + { + _wasMinimized = true; + foreach(Form frm in _forms) + { + frm.Hide(); + } + } + if (FormWindowState.Normal == WindowState && _wasMinimized) + { + _wasMinimized = false; + foreach (Form frm in _forms) + { + frm.Show(); + } + } + } + + #endregion Window handling } }