Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/193: Рейтинг темы: голосов - 193, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 30.09.2012
Сообщений: 4

Закрытие старой формы при переходе на новую

30.09.2012, 00:22. Показов 37510. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Такая проблема:
В программе некое количество форм, при переходе на новую форму, по клику на кнопку, нужно, чтобы старая форма закрывалась.
После долгих гуляний по гуглу придумалось только сделать через this.Hide(); пишем это в форме, которую нам нужно закрыть. Но данный метод лишь форму скрывает, а нужно, чтобы она именно закрывалась.
Надеюсь, объяснил понятно, надеюсь на вашу помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2012, 00:22
Ответы с готовыми решениями:

Открытие новой формы и закрытие старой
AuthForm f = new AuthForm(); this.Close(); f.Show(); так например закрываются две ...

Как создать новую базу в 1с бухгалтерия и перенести данные из старой базы в новую?
Доброго времени суток: подскажите пожалуйста начинающиму администратору: как создать новую ИБ в 1С бухгалтерия7.7 и перенести данные...

если поверх старой виндовс ставить новую, что при этом изменится ?
если поверх старой виндовс ставить новую, что при этом изменится ? ( домашнию версию на ультимайт)

14
47 / 47 / 13
Регистрация: 05.05.2012
Сообщений: 178
30.09.2012, 00:44
C#
1
this.Close();
Это закрывает форму. Правда, если это реализовать и в родительской форме, то программа закроется.
1
1 / 1 / 0
Регистрация: 30.09.2012
Сообщений: 4
30.09.2012, 00:56  [ТС]
Нужно, чтобы родительскую именно закрывало..
0
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 6
04.10.2012, 18:47
Напиши имена форм и поясни какую нужно закрыть а какую закрыть!
тогда посмотрим
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
04.10.2012, 19:11
то есть нужно, чтобы при закрытии нового окна и закрытии старого, даже если старое - главное окно, приложение продолжало работать?
0
25 / 24 / 13
Регистрация: 04.07.2012
Сообщений: 463
04.10.2012, 21:20
Можно вот так
C#
1
2
3
4
5
Hide()
 Form2 f2 = new Form2();
 f2.ShowDialog();
 this.Close();
 break;
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
06.10.2012, 16:18
alexs622, так не получится
0
25 / 24 / 13
Регистрация: 04.07.2012
Сообщений: 463
06.10.2012, 16:33
Вот посмотри тут https://www.cyberforum.ru/ado-... 56629.html, решал другой вопрос, но там есть переход с закрытием формы
0
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 6
06.10.2012, 21:58
C#
1
2
3
4
5
 
Form2 f2 = new Form2();
Form1 f1 = new Form1(); 
f2.show();
f1.Close();
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
07.10.2012, 13:53
f1 еще не показал, но уже закрыл.
0
25 / 24 / 13
Регистрация: 04.07.2012
Сообщений: 463
07.10.2012, 17:12
Почему мой вариант не получится???? Он закрывает Form1 и сразу же открывает Form2
0
 Аватар для negest
11 / 11 / 1
Регистрация: 31.03.2012
Сообщений: 29
07.10.2012, 23:28
Забавный вопрос, непонятно только зачем такой ход, но ответ может быть такой:

Создаем класс который и будет управлять формами:
FormManager.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    public class FormManager
    {
        FormSample currentForm;
        FormSample oldForm;
 
        public FormManager()
        {
            FormOpen(new Form1());
 
            Application.Run();
        }
 
        public void FormOpen(FormSample form)
        {
            oldForm = currentForm;
            currentForm = form;
            currentForm.formManager = this;
            currentForm.Show();
 
            if (oldForm != null)
                oldForm.Close();
        }
 
        public void Exit()
        {
            Application.Exit();
        }
    }
Создем форму FormSample, будет служить базовой формой для остальных в ней создаем открытое поле formManager соответствующего класса:
FormSample.cs
C#
1
2
3
4
5
6
7
8
9
    public partial class FormSample : Form
    {
        public FormManager formManager;
 
        public FormSample()
        {
            InitializeComponent();
        }
    }
Теперь создаем две формы наследующиеся от FormSample и добавляем событие клика мыши на клиентской части формы, которое в Form1 открывает Form2 и закрывает Form1, а в Form2 закрывает приложение:

Form1.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public partial class Form1 : FormSample
    {
        public Form1()
        {
            InitializeComponent();
 
            this.MouseClick += new MouseEventHandler(Form1_MouseClick);
        }
 
        public void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            formManager.FormOpen(new Form2());
        }
    }
Form2.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public partial class Form2 : FormSample
    {
        public Form2()
        {
            InitializeComponent();
 
            this.MouseClick += new MouseEventHandler(Form2_MouseClick);
        }
 
        public void Form2_MouseClick(object sender, MouseEventArgs e)
        {
            formManager.Exit();
        }
    }
И теперь меняем текст в Program.cs для создания и инициализации класса управляющего формами
Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
static class Program
    {
        static FormManager formManager;
 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            formManager = new FormManager();
        }
    }
Вроде доступно объяснил, если нет вот пример:
Вложения
Тип файла: zip MultiFormes.zip (17.7 Кб, 93 просмотров)
1
1 / 1 / 0
Регистрация: 30.09.2012
Сообщений: 4
08.10.2012, 00:32  [ТС]
Цитата Сообщение от negest Посмотреть сообщение
Забавный вопрос, непонятно только зачем такой ход
Нужно для такой ситуации:
Есть Form1, из нее переходим в Form2, при этом делая Хайд первой.
В Form2 если нажать на крестик, или кнопку со строкой Close(), закрывается данное окно, и как бы вся программа. Form1 же в Хайде остается. Но на самом деле прога не закрывается, а остается в процессах. Т.е. она запущена, просто не видна - вот такую ситуацию нужно было исключить.
Спасибо за советы, решил вопрос по простому (конечно не идеально, но для моего конкретного случая сойдет):
убрал с Form2 кнопочки свернуть,полный экран, выход(Х).
сделал внизу кнопку "Выход", в которой была строка Application.Exit() - закрывает сразу всю программу.
Может кому пригодится данный способ. =)

Всем еще раз спасибо, ради интереса последний вариант опробую.)
1
0 / 1 / 0
Регистрация: 12.12.2020
Сообщений: 6
28.06.2022, 22:13
точно такая же ситуация была, спасибо за стоку закрывающую программу, но лучше добавить её в событие FormClosed
0
312 / 143 / 77
Регистрация: 23.08.2015
Сообщений: 455
05.07.2022, 17:09
Можно Application.Exit() заменить добавлением в событие FormClosed такого кода:
C#
1
2
3
4
foreach (Form form in Application.OpenForms)
{
   form.Close();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2022, 17:09
Помогаю со студенческими работами здесь

Выполнение сценария при переходе на новую страницу
В общем имеется скрипт (silent.js) который скрывает div. Как сделать так чтобы при переходе по ссылке выполнялся мой скрипт на новой...

При переходе на новую страницу запустить скрипт
html. на странице расположена кнопка. при нажатии на нее перейти по ссылке на другую страницу и при открытии другой страницы запустить...

Ошибки при переходе на новую версию РНР
На Хостинге которым пользуюсь изменили версию PHP до 5.5... перед этим стояла 5.3 если не ошибаюсь. После этого на сайте стали выскакивать...

Программа выдаёт ошибку при переходе в новую activity
При переходе в новую activity приложение вылетает. ниже приведен код того самого activity package com.example.chernovik; import...

Очищение полей DBEdit при переходе на новую форму
Пилю такую функцию: в базу данных продаж добавляется новая запись. Если имя записи (модель техники) уже существует, а цена различается,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru