Как Вы реализуете на WinForms C# плавающие панели?
Делаю простую студенческую работу и возникла необходимость реализовать плавающие панели, наряду с основным окном программы(панель инструментов). Идея в том что панель инструментов должна быть не привязана к основному окну и при этом не отдельным окном реализовывать. Как сделал я. Я создал MDI форму, расширил ее на весь экран и теперь создаю в ней нужные мне панели и MDI формы при необходимости. При каждом изменении размеров панелей и добавлении-удалении других панелей, просто заново формирую область видимости своей формы. Использую такой код:
private void CreateMainRegion()
{
// создаем с область формы, которую мы хотим видеть
Region mainRegion = null;
foreach (var control in this.Controls)
{
if (control is ScrollableControl other_panel)
{
Rectangle rectOtherItem = new Rectangle(other_panel.Left, other_panel.Top, other_panel.Width, other_panel.Height);
if (mainRegion == null)
mainRegion = new Region(rectOtherItem);
else
mainRegion.Union(rectOtherItem);
}
}
foreach (var control in this.MdiChildren)
{
if (control is Form other_MDI_Form)
{
Rectangle rectOtherMDIform = new Rectangle(other_MDI_Form.Left, other_MDI_Form.Top, other_MDI_Form.Width, other_MDI_Form.Height);
if (mainRegion == null)
mainRegion = new Region(rectOtherMDIform);
else
mainRegion.Union(rectOtherMDIform);
}
}
// устанавливаем видимую область
this.Region = mainRegion;
}