C# 表单未显示在Show()上,因为正在使用它

C# 表单未显示在Show()上,因为正在使用它,c#,forms,docking,C#,Forms,Docking,当我使用dockContainer.Addform和后来的dockContainer.RemovedockableFormInfo时,我在尝试从中删除表单时遇到问题,当我使用Form.show使其显示时,它根本不会显示 通过属性查看,它显示表单实际上是可见的=true,但即使使用表单的可停靠控件已从容器中删除,我的想法是它仍然使用表单资源,因此我无法使其显示在控件之外 如何显示表单?问题已解决,首先感谢Hans Passant提供的顶级提示 从对接容器中移除后,只需将TopLevel设置为tru

当我使用dockContainer.Addform和后来的dockContainer.RemovedockableFormInfo时,我在尝试从中删除表单时遇到问题,当我使用Form.show使其显示时,它根本不会显示

通过属性查看,它显示表单实际上是可见的=true,但即使使用表单的可停靠控件已从容器中删除,我的想法是它仍然使用表单资源,因此我无法使其显示在控件之外


如何显示表单?

问题已解决,首先感谢Hans Passant提供的顶级提示

从对接容器中移除后,只需将TopLevel设置为true

以下是测试代码:

using System;
using System.Drawing;
using System.Windows.Forms;
using Crom.Controls.Docking;

namespace DockingTester
{
    public partial class Form1 : Form
    {
        private Form dummyForm;
        private readonly Guid dummyFormGuid = Guid.NewGuid();


        public Form1()
        {
            InitializeComponent();
            CreateDummyForm();
            this.dummyForm.Show();
        }

        private void CreateDummyForm()
        {
            dummyForm = new Form();
            this.dummyForm.Text = "Dummy docking test form";
        }

        private static void DockUndockForm(DockContainer dockContainer, Form form, Guid guid)
        {
            DockableFormInfo formInfo = dockContainer.GetFormInfo(guid);

            //Add
            if (formInfo == null)
            {
                formInfo = dockContainer.Add(form, zAllowedDock.All, guid);
                dockContainer.DockForm(formInfo, DockStyle.Left, zDockMode.Inner);
            }
            //Remove
            else
            {
                Form dummy =  formInfo.DockableForm;
                dockContainer.Undock(formInfo, new Rectangle(Point.Empty, new Size(100, 300)));
                dockContainer.Remove(formInfo);

                dummy.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
                dummy.TopLevel = true;
            }
        }

        private void dockUndockButton_Click(object sender, EventArgs e)
        {
            if (this.dummyForm.IsDisposed)
                CreateDummyForm();
            DockUndockForm(this.dockContainer1, this.dummyForm, this.dummyFormGuid);
        }

    }
}

您可以显示您当前的代码吗?dock容器肯定在修改表单属性,以将其强制放入容器中。TopLevel属性的可能性很高。当设置为false时,如果窗体没有父级,Show方法将不会使其可见。最好只是创建一个新的实例。考虑调用窗体。在将它从码头容器中移除之后隐藏。正确的项目页面是: