Я знаю, что можно использовать Form
в качестве дочернего элемента управления в другой форме.
ChildForm child = new ChildForm();
child.TopLevel = false;
child.FormBorderStyle = FormBorderStyle.None;
child.Show();
containerControl.Controls.Add(child);
Я понимаю, что это не то, для чего Form
был разработан.Мне было интересно, каковы здесь последствия, в отличие от использования UserControl
?Есть ли реальные недостатки?Какие-нибудь большие ненужные накладные расходы?Неожиданное поведение?
С другой стороны, есть ли преимущества использования формы?Есть ли что-то, что вы не можете сделать с помощью UserControl, что вы можете сделать с формой, которая может быть полезна, если используется в качестве дочернего элемента управления?
Я понимаю, что и 1011 *, и UserControl
наследуют ContainerControl
, но чем отличаются их ненаследуемые члены?
Мой сценарий
Причина, по которой я спрашиваю, заключается в том, что у меня есть существующий элемент управления Form
, что я бы хотел, чтобы иногда отображался сам по себе (для разработки и как небольшая дополнительная функция), но для не нужно .Однако мне нужно событие Closing
формы (которое не наследуется от ContainerControl
), и мне нужно иметь возможность отменить закрытие формы, если файл был отредактирован и не сохранен.
Я также заметил в своих выводах, что Form
, кажется, имеет некоторые параметры прозрачности, которых UserControl
, похоже, не имеет, но я не уверен, будут ли они работать, когда форма используется в качестве дочернего элемента управления.