Скажем, у меня есть Form
, который мы назовем ParentForm
, и он содержит Panel
, который мы назовем ContainerPanel
.Теперь ContainerPanel
содержит Panel
, который мы назовем EntityPanel
.
Так что в основном Form
содержит Panel
, который содержит Panel
.
В ContainerPanel у нас есть:
void EntityPanel_MouseDown(object sender, MouseEventArgs e)
{
ContainerPanel.Controls.Remove(EntityPanel);
ParentForm.AcceptEntityPanel(EntityPanel);
}
, а в MainForm у нас есть:
void AcceptEntityPanel(Panel panel)
{
Controls.Add(panel);
panel.MouseUp += new MouseEventHandler(
delegate(object sender, MouseEventArgs e)
{
MessageBox.Show("Mouse has been released.");
});
}
Примечание: это только пример кода, который я только что набрал здесьбез проверки синтаксиса и т. д. Я понимаю, что объединить эти две функции в одну - тривиально, однако в моем приложении эти две функции выполняют несколько других функций и должны быть отдельными.
Таким образом, EntityPanel
,который принадлежит ContainerPanel
должен быть переведен в ParentForm
, когда пользователь нажимает кнопку мыши.
Когда пользователь отпускает мышь, мне все еще нужно, чтобы событие MouseUp
было запущено, но этоне работает.
Ранее я передавал информацию о панели и создавал новую панель в родительской форме, а также вручную вызывал метод MouseDown.
Что я делаю сейчас, как вы можете видеть в моем примере выше, это то, чтоЯ передаю точно такую же панель обратно в родительскую форму.Я надеялся, что таким образом будет работать MouseDown / MouseUp, однако это не сработало.
У меня заканчиваются идеи о том, как еще структурировать этот модуль моей программы.Есть идеи?