В настоящее время у меня есть следующая структура: Form1
получает входные данные. После того, как входы записаны, вы можете нажать кнопку, чтобы перейти к Form2
, который динамически создается на основе входов Form1
. Form2
собирает больше входных данных, которые будут использоваться на Form3
. В каждой форме (т. Е. Form1
, Form2
, Form3
) вы можете вернуться к предыдущему Form
на тот случай, если вам потребуется изменить свои входные данные. Для этого я закрою текущий Form
и открою его Owner
Form
, который я записал вручную в своем коде.
Мой текущий метод открытия этих нескольких форм: скрытие текущей формы при переходе к следующей форме, закрытие текущей формы при возврате к предыдущей форме. Образец моего кода:
private void next_Click(object sender, EventArgs e)
{
List<int> intData = new List<int>();
//Process intData's members
this.Hide();
SecondInputForm form2 = new SecondInputForm(intData);
form2.Owner = this;
form2.ShowDialog();
}
Где next
- это Button
в моем Form1
, который позволяет пользователю перейти ко второй форме Form2
. В моем Form2
у меня есть аналогичная конструкция, чтобы открыть Form3
. Тем не менее, у меня есть другой прослушиватель событий FormClosing
, чтобы открыть мою предыдущую форму Form1
, когда Form2
закрыт (т.е. возврат к предыдущей форме):
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Owner.Show();
}
private void next_Click(object sender, EventArgs e)
{
List<int> intData = new List<int>();
//Process intData's members
EquationInput form3 = new EquationInput(intData);
form3.Show();
form3.Owner = this;
this.Hide();
}
Теперь проблема возникает здесь. Когда я Hide()
Form2
, он регистрируется как FormClosing
событие и каким-то образом закрывает Form2
и в результате закрывает свою «дочернюю» форму Form3
. Затем он открывает Form1
.
Мой желаемый результат: он скрывает Form2
, , но не закрывает его и продолжает сбор данных от пользователя в Form3
.
Как лучше подходить к открытию нескольких форм или Как мне исправить текущую проблему, если Hide()
-ing форма действительно является лучшим подходом? Я чувствую, что использование Hide()
для имитации ряда непрерывных форм на самом деле не «интуитивно», можно сказать.