Member 14630006 Ответов: 1

Как заставить форму двигаться внутри границ края панели?


Я пытаюсь сделать свою вторую форму. Когда он открывается и перемещается внутри некоторых границ панели, я не хочу, чтобы он был скрыт между краями.

Что я уже пробовал:

Form3 objForm = new Form3();
objForm.TopLevel = false;
panel4.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
objForm.Dock = DockStyle.Fill;
objForm.Show(); 

1 Ответов

Рейтинг:
1

OriginalGriff

Почему вы помещаете формы внутри панели?

Вместо этого поместите все элементы управления и функциональные возможности формы в элемент управления UserControl и добавьте его на панель, а также добавьте экземпляр в пустую форму, если вам нужно отобразить ее версию формы.

Что касается проблемы, которую вы заметили, то она зависит от вашего дизайна элемента управления From / UserControl: если форма каким-то образом не реагирует на изменения размера, чтобы сохранить все элементы управления видимыми при любых обстоятельствах, то ваши элементы управления всегда будут "обрезаны", когда доступное пространство меньше требуемого.
Вы можете использовать якорь и док - станцию в форме для достижения этой цели (хотя это, вероятно, будет очень ограниченное решение) или вы можете реагировать на события изменения размера формы, изменяя размер и расположение каждого элемента управления, который она содержит, - но это важная задача и будет включать в себя изменение размера шрифтов, кнопок, полей, практически всего самостоятельно. С точки зрения пользователя, он, вероятно, не будет особенно полезен, за исключением очень небольших изменений от разработанного размера. В WinForms нет автоматического способа сделать это, хотя в WPF он есть (но и он не идеален).


Member 14630006

вы хотите сказать, что я использую TabControl ? но код будет массовым и запаздывающим

OriginalGriff

Кто упомянул TabControls?

элемент управления UserControl:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.usercontrol?view=netframework-4.8