Что я хочу сделать:
- Есть две отдельные формы
- Перетащите первую форму во вторую форму и закрепите ее на панели второй формы.
- После этого я хочу иметь возможность перетащить первую форму обратно из второй формы и снова заставить ее стоять самостоятельно.
Перетаскивание и закрепление первой формы во второй форме работает,Но я не могу вернуть форму из второй формы. Когда я перетаскиваю его, он исчезает.
Поскольку перетаскивание делает пример кода более сложным, чем необходимо, я его пропустил. Вместо этого я использовал кнопки. Пример формы имеет две кнопки и панель. При нажатии кнопки 1 форма помещает свою копию в панель. При нажатии второй кнопки форма для копирования должна быть отсоединена и показана в виде отдельной формы. Эта последняя часть не работает. Вместо этого форма копирования исчезает.
То, что я пытаюсь сделать, невозможно, или я делаю что-то не так?
РЕДАКТИРОВАТЬ: из комментария Ганса теперь я знаю, что не так. Я изменил код ниже, чтобы он работал. Я оставил комментарий за строкой кода, которая изменилась
public partial class Form1 : Form
{
private Form1 CopyForm;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (CopyForm == null)
{
CopyForm = new Form1();
CopyForm.TopLevel = false;
CopyForm.Parent = panel1;
CopyForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
CopyForm.Dock = DockStyle.Fill;
CopyForm.Show();
}
}
private void button2_Click(object sender, EventArgs e)
{
CopyForm.Dock = DockStyle.None;
CopyForm.Parent = null;
panel1.Controls.Clear();
CopyForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
CopyForm.StartPosition = FormStartPosition.CenterScreen;
CopyForm.Size = new Size(500, 500);
CopyForm.TopMost = true;
CopyForm.TopLevel = true; // <== This line was the fix to my problem
CopyForm.Show();
}
}