문제가 해결되었습니다. TopLevel 팁의 Hans Passant에게 감사드립니다.
도킹 컨테이너에서 제거한 후 TopLevel을으로 설정하면됩니다. 여기
는 테스트 코드입니다 :
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);
}
}
}
당신이 당신의 현재 코드를 표시 할 수 있습니다 ..? – MethodMan
도크 컨테이너가 Form 속성을 사용하여 컨테이너 안으로 밀어 넣는 것은 확실합니다. TopLevel 속성에 대한 확률이 높습니다. false로 설정하면 폼에 부모가없는 경우 Show() 메소드가 표시되지 않습니다. 새 인스턴스를 만드는 것이 가장 좋습니다. –
Dock 컨테이너에서 Form.Hide를 제거한 후 호출하는 것이 좋습니다. – Dhawalk