Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C#] Работа с 2мя формами

38K
24 ноября 2008 года
Ka6aH4er
12 / / 28.10.2008
При работе с одной формой я вызываю вторую нажатием кнопки на первой. При этом выскакивает вторая форма и все бы нормально если не одно но. Когда я закрываю вторую форму первая никак не закрывается и программа весит в диспетчере задач. Как сделать чтобы при закрытии второй закрывались обе формы??

Вторую форму вызываю так:
 
Код:
Form2 MyForm2 = new Form2();
MyForm2.Show();


Первую я просто скрыл так
 
Код:
Form1.ActiveForm.Hide()

Если я делаю так
 
Код:
Form1.ActiveForm.Dispose()

то вторая вообще не открывается.

Сильно не ругайте, я только учусь :)
1.8K
24 ноября 2008 года
CilCatblack
251 / / 20.09.2007
в обработчике события FormClosed второй формы напиши:):
 
Код:
...
Form1 frm=new Form1();
frm.Close();
...


И да прибудет с тобой сила:)
1.9K
24 ноября 2008 года
tva94
115 / / 01.05.2007
Я думаю достаточно передать во вторую форму первую форму и пры выходе из вт. формы закрыть первую, а то я не понял где в обработчике возметься первая форма.
Способов много, но это самый простой.
341
25 ноября 2008 года
Der Meister
874 / / 21.12.2007
 
Код:
Form1 frm=new Form1();
frm.Close();
Прикольный выкидыш
Цитата:
Как сделать чтобы при закрытии второй закрывались обе формы??

Надо бы на FormClosed второй формы подписывать первую форму.
Вот только сам сценарий такой работы больно уж странный... Не проще ли сделать второе окошко диалогом?

38K
25 ноября 2008 года
Ka6aH4er
12 / / 28.10.2008
Если в FormClosed пишу
 
Код:
Form1 frm=new Form1();
frm.Close();
то первая форма всеравно не закрывается.

Цитата:
Надо бы на FormClosed второй формы подписывать первую форму.

Поподробней пожалуйста.

1.8K
25 ноября 2008 года
CilCatblack
251 / / 20.09.2007
Цитата: Ka6aH4er
Если в FormClosed пишу
 
Код:
Form1 frm=new Form1();
frm.Close();
то первая форма всеравно не закрывается.

Поподробней пожалуйста.



Открывай вторую форму с помощью метода ShowDialog() тогда:) все получится:)

341
25 ноября 2008 года
Der Meister
874 / / 21.12.2007
[QUOTE=Ka6aH4er]Поподробней пожалуйста.[/QUOTE]
Код:
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();
}
38K
26 ноября 2008 года
Ka6aH4er
12 / / 28.10.2008
Код:
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();
}


При таком описании закрывается только вторая форма, а мне нужно чтобы после закрытия второй автоматически закрывалась первая и программа завершила выполнение.
288
26 ноября 2008 года
nikitozz
1.2K / / 09.03.2007
 
Код:
Form2 form2 = new Form2();
form2.ShowDialog();
Close();
341
26 ноября 2008 года
Der Meister
874 / / 21.12.2007
Цитата: 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();
}


При таком описании закрывается только вторая форма, а мне нужно чтобы после закрытия второй автоматически закрывалась первая и программа завершила выполнение.


Ты так ничего и не понял...
button1 является компонентом первой формы

38K
26 ноября 2008 года
Ka6aH4er
12 / / 28.10.2008
 
Код:
Form1.ActiveForm.Hide();
            Form2 MyForm2 = new Form2();
            MyForm2.ShowDialog();
            Close();

Теперь всё работает как надо. Всем большое спасибо за помощь. :)
45K
28 ноября 2008 года
fill245
2 / / 28.11.2008
Цитата: Ka6aH4er
 
Код:
Form1.ActiveForm.Hide();
            Form2 MyForm2 = new Form2();
            MyForm2.ShowDialog();
            Close();

Теперь всё работает как надо. Всем большое спасибо за помощь. :)



я извиняюсь, у меня похожая ситуация, первую форму я скрываю, при закрытии второй у меня приложение "висит" в процессах.
Можно мне ламеру подробнее обьяснить как вы реализовали, :confused:

241
29 ноября 2008 года
Sanila_san
1.6K / / 07.06.2005
Код в студию.
45K
04 декабря 2008 года
fill245
2 / / 28.11.2008
Значит у меня такого плана : 2 формы Form1-главная и Form2.
При запуске проекта открывается Form1. потом мне надо скрыть Form1 и работать с Form2. я таки образом делаю,
 
Код:
Form1.ActiveForm.Hide();
                Form2 F = new Form2();
                F.ShowDialog();

всё нормально Form1 скрылась. Отображается Form2.
потом если я закрываю Form2, то приложение вроде бы закрылось, а висит в процессах.
ПРобовал в обработчике закрытия Form2 писать ъ
 
Код:
Form1 F = new Form1();
                F.Close();

не помогает, как быть ??
41K
22 декабря 2008 года
lsash
5 / / 21.09.2008
А если не морочить себе голову и в обработчик FormClosed формы Form2 вставить следующее???
 
Код:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

Но странно как то, что при закрытии вспомогательной формы нужно закрывать все приложение.
32K
22 декабря 2008 года
Rififi
54 / / 04.06.2008
Цитата: fill245
потом если я закрываю Form2, то приложение вроде бы закрылось, а висит в процессах.



потому что "спрятать форму" != "закрыть форму"

примерно так:

Код:
void Form1()
{
    // Инициализация второй формы
    this.form2 = new Form2();
    // При закрытии формы 1 также закрываем и себя
    this.form2.FormClosed += delegate() { this.Close(); }
}

void button1_Click(...)
{
   this.form2.Show();
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог