C# Как грамотно закрыть Form?
Здравствуйте, коллеги! Не думал, что будут проблемы с такими вот вещами, но тем не менее. Вот в чем суть проблемы. Разрабатываю программу, в которой из главной Form1, при нажатии на копку я открываю Form2.
Далее уже на Form2 я выполняю код, который заполняет таблицу на Form1, при этом я вывожу данные в таблицу, а затем мне нужно закрыть Form2 сразу.
Так вот в чем проблема: Form2 она то вроде закрывается, но по факту только скрывается. По долгу своей работы, мое приложение должно работать сутками в фоне и получается, что очередной раз пользователь открывает Form2, нажимает там на кнопку, таблица на Form1 заполняется, но Form2 не закрывается, а сворачивается. И так у меня плодятся окна Form1 и Form2 до бесконечности. Как можно это грамотно обыграть? P.s. Пробовал и Form2.ActiveForm.Close() и this.Close() ничего не помогает. Может логическая ошибка где? Помогите, пожалуйста!
3 ответа 3
После закрытия формы через Close() вызовите в первой форме у второй Dispose() и будет вам счастье. Иногда достаточно почитать официальные мануалы.
Два условия, когда форма не удаляется при вызове Close это когда (1) это часть приложения многодокументного интерфейса (MDI) и форма не является видимой; и (2) форма была отображена посредством ShowDialog.
Пример обработчика события по нажатию кнопки в Form2 с изменением свойств объектов формы Form1.
Пример более правильного вызова/создания дочерней формы.
Настоятельно рекомендую иметь ввиду контроль наличия (существования) окна, если вы используете окно без привязки к основному. Т.е. если дочерние окна можно убрать в фон или на задний план, то вы обязательно его потеряете.
Если вам необходим доступ к методам формы, то необходимо создавать для них делегаты методов перед использованием.
Закрыть форму по нажатию кнопки
По нажатию кнопки на второй форме закрыть ее и показать первую
Есть 2 формы. На второй форме есть кнопка. нужно, чтобы при нажатии на эту кнопку эта же, то есть.
Не открывает форму по нажатию кнопки
Добрый день! Делаю пример книжки: при нажатии кнопки, текст из textBox вставляется в textBox в.
Как закрыть форму нажатием кнопки Esc
А как закрыть форму нажатием кнопки Esc не создавая дополнительных кнопок на форме? Вариат.
Вывести вторую форму на экран по нажатию кнопки
Добрый день. У меня возникла проблема, что никак не могу вывести вторую форму на экран по.
Решение
Как при открытии формы с кнопки, закрыть предыдущую форму?
Есть форма с кнопкой, по нажатию которой переходит на другую форму. Как сделать так, чтобы форма по.
Как закрыть форму по нажатию «Еsc»
Здравствуйте друзья. В моем приложении есть формы как мне их закрывать по нажатию клавиши.
При нажатии кнопки закрыть форму в случае правильного расположения отметок в чекбоксах
поместить на форму кнопку и 3 чекбокса. При нажатии кнопки закрыть форму в случае правильного.
Как реализовать переход в другую форму по нажатию кнопки в исходной форме?
Делаю формы Form1 и Form2 На Form1 делаю кнопку для перехода на Form2 Что вписывать в кнопку?
Как сделать проверку текста в textBox1 и по нажатии кнопки закрыть форму(форма не главная)
Как сделать проверку текста в textBox1 и по нажатии кнопки закрыть форму(форма не главная)? using.
Создать форму, создать в ней таблицу, которая по нажатию кнопки заполнялась случайными числами
Доброе время суток. Я был бы очень благодарен тем, кто поможет мне разобраться с вот такой.
Закрыть всё формы приложения
Закрытием второй формы закрыть все приложение
Всем доброго времени суток. Помогите пожалуйста, есть к примеру 2-е формы, как сделать так что бы.
Закрыть окно Приложения
Привет. дело в том что у меня есть два окна (форм1 и форм2). первое открываеться при запуске, в.
Закрыть форму, не закрывая всего приложения
Приветствую вас! Появилась такая проблема: При клике на Меню создаю окно: private void.
Вложения
WindowsFormsApplication.zip (47.0 Кб, 21 просмотров) |
Закрыть все работающие потоки при завершении работы приложения
В некоторых случах после закрытия приложения студия выдает следующую ошибку: Error 12 Unable to.
Закрыть все открытые формы, отчеты и прочее, кроме одной формы
Добрый день. Подскажите пожалуйста, какой надо написать код, чтобы при нажатии кнопки закрылись все.
По истечению времени закрыть все приложения
Можно ли сделать так? На форме есть TextBox и кнопка. В TextBox ввели цифру, А потом нажали на.
Закрыть все формы
Ребят как закрыть все формы в программе.. просто понимаю что идет ошибка из-за form1.Hide;
Как полностью закрыть приложение?
Если приложение запущено, то показать MessageBox и закрыть приложение
Доброго времени. Плохо разбираюсь в с# и прощу помощи написать кусочек кода. Мысль такая «Если.
Нужно скрыв главную форму, при закрытии второй, закрыть программу полностью
Как это сделать, помогите плиз. private void btNext_Click(object sender, EventArgs e) <.
закрыть приложение Word
как программно закрыть ворд приложение. Я с таким кодам закрываю, но закрывается толка документ.
это вы делаете в form2?
Добавлено через 13 секунд
Автор, я тебя понимаю. Ты запускаешь форму_1, потом открываешь форму_2 скрывая форму_1 и потом хочешь при закрытии формы_2 закрыть полностью программу, что бы она не висела процессах. В форме_2 подписываешься на событие FormClosed и вставляешь эту строку
Добавлено через 1 минуту
Добавлено через 7 минут
Закрыть приложение по таймеру
Доброго времени суток, уважаемые форумчане! Возникла проблема: как закрыть приложение (из дочерней.
Закрыть приложение через 5 секунд
Помогите пожалуйста, подскажите как с помощью таймера закрыть приложение автоматически через 5.
Создать приложение, которое нельзя закрыть
Здравствуйте! Пишу мелкое приложение, в котором устанавливается лимит времени использования ПК. По.
Закрытием второй формы закрыть все приложение
Всем доброго времени суток. Помогите пожалуйста, есть к примеру 2-е формы, как сделать так что бы.
Windows forms закрыть форму
Лучший отвечающий
Вопрос
Имеется многооконное приложение. При запуске вызывается что-то на-подобии «Окна входа», где пользователь вводит, к примеру, логин и пароль. При наличии в базе пары введенный логин-пароль «Окно входа» закрывается и открывается «Основное окно», из которого последовательно вызываются другие окна, а оно закрывается. Понятно, что с привязкой формы к приложению это все организовать не получится(точнее сделать то можно, меняя у форм свойство Visible, но это будет «жрать неимоверное количество памяти», а это не очень хорошо), поэтому в файле «Program.cs» пишу следующий код:
Затем в нужном месте просто пишу что-то на-подобии:
При такой работе практически все работает как надо, но т.к. приложение не зависит от Form, то если пользователь сам закроет окно(не нажав на кнопку, выделенную мной для закрытия), то процесс приложения будет «висеть» в памяти, а это «не есть гуд».
Пытался идентифицировать каким именно способом закрылась форма: с помощью кода
или по нажатию пользователя на «крестик». Но оба этих события передают в метод Form_Closing один и тот же аргумент FormClosingEventArgs, который в поле CloseReason содержит значение UserClosing, т.е. таким макаром не отследить. Подумал: «может создать некоторую переменную типа Boolean, значение в которой изменять по нажатии на мою клавишу для закрытия и в зависимости от её значения завершать процесс приложения или нет», но эта переменная должна быть глобальной, а использование таких переменных также не очень хорошо. В итоге: я встал в тупик.
Может кто-то подскажет каким образом можно корректно реализовать многооконное приложение, чтобы не возникало вышеописанных проблем.