示例#1
0
        /// <summary>
        /// 打开子窗体(已存在同类窗体时,不再重复打开,而是显示已有的窗体)
        /// </summary>
        /// <param name="newform">已经实例化的子窗体</param>
        /// <param name="openDifTextForm">是否打开标题不同的同一类型窗体</param>
        public static void ShowSizableForm(ChildSizableForm newform, bool openDifTextForm = false)
        {
            if (newform == null)
            {
                return;
            }
            if (newform.HasShow)
            {
                var forms = Application.OpenForms.Cast <Form>().Where(v => v.GetType().Equals(newform.GetType()));

                //已show过同类窗体,并且允许比较窗体标题且标题不相同:建立新窗体
                if (openDifTextForm && !forms.Any(v => v.Text.Equals(newform.Text)))
                {
                    newform.Show();
                }
                else//销毁新窗体,显示旧窗体
                {
                    newform.Close();
                    newform.Dispose();

                    Form form = forms.FirstOrDefault(v => v.Text.Equals(newform.Text));
                    if (form != null && form.WindowState == FormWindowState.Minimized)
                    {
                        form.WindowState = FormWindowState.Normal;
                        form.BringToFront();
                    }
                }
            }
            else//未显示过同类型窗体时,显示新窗体
            {
                newform.Show();
            }
        }