示例#1
0
        /// <summary>
        /// ShowArchiveDetailForm
        /// </summary>
        /// <param name="detailForm"></param>
        public void ShowArchiveDetailForm()
        {
            IArchiveDetailForm detailForm = this.ArchiveDetailForm;
            Form form = detailForm as Form;

            if (form == null)
            {
                return;
            }

            // 需要变换DetailForm状态
            //if (form.Visible)
            //{
            //    return;
            //}

            //TabbedMdiForm mdiForm = TabbedMdiForm.GetMainForm();
            //if (mdiForm != null)
            {
                form.Text = this.Text + "_详细";

                //// show in mdi
                //mdiForm.AddFormToGroup(form, 1);
                //form.InvisibleOnClosing = true;

                form.FormBorderStyle = FormBorderStyle.None;
                form.TopLevel        = false;
                form.Dock            = DockStyle.Fill;
                this.splitContainer1.Panel2.Controls.Add(form);
                // 如果是最大化,里面的控件不能随着Panel2大小改变而改变
                //form.WindowState = FormWindowState.Maximized;
                // 在还没Show之前,SplitterDistance是按照原大小来的,此时改变窗体大小,SplitterDistance会按比例改变。
                // 所以应该先改变大小,再读入SplitterDistance
                form.Size = new Size(this.Width, this.Height - this.splitContainer1.SplitterDistance);

                this.splitContainer1.Panel2Collapsed = false;

                if (detailForm.MenuStrip != null)
                {
                    detailForm.MenuStrip.Visible = false;
                }
            }
            //else
            //{
            //    form.TopLevel = true;
            //}

            form.VisibleChanged -= new EventHandler(detailForm_VisibleChanged);
            form.VisibleChanged += new EventHandler(detailForm_VisibleChanged);

            form.Show();

            detailForm.UpdateContent();
            //if (detailForm is ArchiveDetailForm)
            //{
            //    (detailForm as ArchiveDetailForm).UpdateContent();
            //}
            //else if (detailForm is ArchiveSeeForm)
            //{
            //    (detailForm as ArchiveSeeForm).UpdateContent();
            //}
            // 如果DisplayManager是BindingSource类型的,如果Cancel会导致 PositionChanged,所以只能Disable Grid
            //  && form.ControlManager != null
            //    && (form.ControlManager.State == StateType.Add || form.ControlManager.State == StateType.Edit)
            // 还不是很好,有问题。Todo
            IDisplayManagerContainer dmc = detailForm as IDisplayManagerContainer;

            if (this.MasterGrid != null && dmc != null && dmc.DisplayManager == this.DisplayManager)
            {
                this.MasterGrid.ReadOnly = true;
            }
        }