Form2 MyForm2 = new Form2();
MyForm2.Show();
[C#] Работа с 2мя формами
Вторую форму вызываю так:
Код:
Первую я просто скрыл так
Код:
Form1.ActiveForm.Hide()
Если я делаю так
Код:
Form1.ActiveForm.Dispose()
то вторая вообще не открывается.
Сильно не ругайте, я только учусь :)
Код:
...
Form1 frm=new Form1();
frm.Close();
...
Form1 frm=new Form1();
frm.Close();
...
И да прибудет с тобой сила:)
Способов много, но это самый простой.
Код:
Form1 frm=new Form1();
frm.Close();
frm.Close();
Цитата:
Как сделать чтобы при закрытии второй закрывались обе формы??
Надо бы на FormClosed второй формы подписывать первую форму.
Вот только сам сценарий такой работы больно уж странный... Не проще ли сделать второе окошко диалогом?
Код:
Form1 frm=new Form1();
frm.Close();
frm.Close();
Цитата:
Надо бы на FormClosed второй формы подписывать первую форму.
Поподробней пожалуйста.
Цитата: Ka6aH4er
Если в FormClosed пишу
то первая форма всеравно не закрывается.
Поподробней пожалуйста.
Код:
Form1 frm=new Form1();
frm.Close();
frm.Close();
Поподробней пожалуйста.
Открывай вторую форму с помощью метода ShowDialog() тогда:) все получится:)
Код:
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
Код:
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
//form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
//form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
При таком описании закрывается только вторая форма, а мне нужно чтобы после закрытия второй автоматически закрывалась первая и программа завершила выполнение.
Код:
Form2 form2 = new Form2();
form2.ShowDialog();
Close();
form2.ShowDialog();
Close();
Цитата: Ka6aH4er
Код:
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
//form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
{
Form2 form = new Form2();
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
//form.Show();
}
void form_FormClosed(object sender, FormClosedEventArgs e)
{
Dispose();
}
При таком описании закрывается только вторая форма, а мне нужно чтобы после закрытия второй автоматически закрывалась первая и программа завершила выполнение.
Ты так ничего и не понял...
button1 является компонентом первой формы
Код:
Form1.ActiveForm.Hide();
Form2 MyForm2 = new Form2();
MyForm2.ShowDialog();
Close();
Form2 MyForm2 = new Form2();
MyForm2.ShowDialog();
Close();
Теперь всё работает как надо. Всем большое спасибо за помощь. :)
Цитата: Ka6aH4er
Код:
Form1.ActiveForm.Hide();
Form2 MyForm2 = new Form2();
MyForm2.ShowDialog();
Close();
Form2 MyForm2 = new Form2();
MyForm2.ShowDialog();
Close();
Теперь всё работает как надо. Всем большое спасибо за помощь. :)
я извиняюсь, у меня похожая ситуация, первую форму я скрываю, при закрытии второй у меня приложение "висит" в процессах.
Можно мне ламеру подробнее обьяснить как вы реализовали, :confused:
Код в студию.
При запуске проекта открывается Form1. потом мне надо скрыть Form1 и работать с Form2. я таки образом делаю,
Код:
Form1.ActiveForm.Hide();
Form2 F = new Form2();
F.ShowDialog();
Form2 F = new Form2();
F.ShowDialog();
всё нормально Form1 скрылась. Отображается Form2.
потом если я закрываю Form2, то приложение вроде бы закрылось, а висит в процессах.
ПРобовал в обработчике закрытия Form2 писать ъ
Код:
Form1 F = new Form1();
F.Close();
F.Close();
не помогает, как быть ??
Код:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
{
Application.Exit();
}
Но странно как то, что при закрытии вспомогательной формы нужно закрывать все приложение.
Цитата: fill245
потом если я закрываю Form2, то приложение вроде бы закрылось, а висит в процессах.
потому что "спрятать форму" != "закрыть форму"
примерно так:
Код:
void Form1()
{
// Инициализация второй формы
this.form2 = new Form2();
// При закрытии формы 1 также закрываем и себя
this.form2.FormClosed += delegate() { this.Close(); }
}
void button1_Click(...)
{
this.form2.Show();
}
{
// Инициализация второй формы
this.form2 = new Form2();
// При закрытии формы 1 также закрываем и себя
this.form2.FormClosed += delegate() { this.Close(); }
}
void button1_Click(...)
{
this.form2.Show();
}