Мне кажется, вы могли бы использовать приложение MDI, задав для свойства Form # 0 IsMdiContainer значение true.
Тогда вы можете сделать что-то похожее:
public partial class Form0 {
public Form0 {
InitializeComponent();
this.IsMdiContainer = true; // This will allow the Form #0 to be responsive while other forms are opened.
}
private void button1_Click(object sender, EventArgs e) {
Form1 newForm1 = new Form1();
newForm1.Parent = this;
newForm1.Show();
}
}
Использование ShowDialog () , как вы указали в своем вопросе, сделает все формы Modal = true .
По определению модальная форма:
Когда форма отображается модально, ввод данных (нажатие клавиатуры или мыши) невозможен, за исключением объектов в модальной форме. Программа должна скрыть или закрыть модальную форму (обычно в ответ на какое-либо действие пользователя), прежде чем может произойти ввод в другую форму. Формы, отображаемые модально, обычно используются в диалоговых окнах приложения.
Вы можете использовать это свойство [( Modal )], чтобы определить, была ли форма, полученная из метода или свойства, отображена модально.
Таким образом, модальная форма должна использоваться только тогда, когда вам требуется немедленная помощь / взаимодействие с пользователем. В противном случае использование модальных форм заставляет поверить, что вы, возможно, бежите в неверном направлении.
Если вы не хотите, чтобы ваша основная форма была контейнером MDI, то, возможно, использование многопоточности является одним из решений с помощью простого BackgroundWorker класса, который является ключом к тому, чего вы хотите достичь. Таким образом, это выглядит как дизайнерский запах ...
- Что вы хотите сделать, кроме того, что ваша основная форма должна быть адаптивной и т. Д.
- Что ты должен делать?
Объясняя, что вы должны делать, мы можем полностью направить вас в правильное или, по крайней мере, возможно, лучшее направление.