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

Открытие дополнительной формы и закрытие основной

21.09.2017, 23:48. Показов 2533. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
            if (MessageBox.Show("Обновление сейчас начнётся, подождите немного.", "Спасибо за терпение!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
            {
                Download_update_and_installing.Update UpD = new Download_update_and_installing.Update();
                Updater updForm = new Updater();
                Form1 fm1 = new Form1();
                UpD.Show(updForm);                     //Открывается другой exe
                fm1.Dispose();
                fm1.Close();
                this.Dispose();
                this.Close();
            }
В основном exe происходит этот код при открытии другого exe для обновления, выполнение кода в основном exe останавливается хотя мне надо его закрыть. Вот и появился вопрос: Как закрыть exe будучи в другом exe?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2017, 23:48
Ответы с готовыми решениями:

Закрепление дополнительной формы к основной
Здравствуйте, уважаемые форумчане! Имеется основная форма(Form1), которая имеет достаточно большие...

Закрытие основной формы из других
Главная форма: Hide(); Form2 f2 = new Form2(); f2.Show(); Главная форма скрыта, переходит на 2...

Закрытие/открытие формы
Добрый день, подскажите пожалуйста как в родительской форме открыть дочернюю форму и сразу закрыть...

Открытие - закрытие формы
как сделать так, чтобы при открытии второй формы с первой, первая закрывалась

10
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
22.09.2017, 00:20 2
Ekijah, не путайте формы и .exe файлы. При закрытии родительской формы закроются все её потомки. Обычно родительскую форму просто прячут методом Hide.
0
0 / 0 / 0
Регистрация: 25.01.2017
Сообщений: 45
22.09.2017, 00:24  [ТС] 3
Эти две формы находятся в разных exe, проблема в том что я не могу копировать файлы пока первый exe открыт и не могу закрыть его из второго exe.
0
56 / 61 / 26
Регистрация: 10.04.2017
Сообщений: 211
22.09.2017, 00:30 4
ФОРМА 2
C#
1
2
3
4
5
6
7
8
9
 
private void button1_Click(object sender, EventArgs e)
        {
          
            Form1 f = new Form1();
      
            f.hide();            
           
        }
ИЛИ
C#
1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
        {
          
            Form1 f = new Form1();
      
            f.close();            
           
        }
1
0 / 0 / 0
Регистрация: 25.01.2017
Сообщений: 45
22.09.2017, 00:35  [ТС] 5
Вы не поняли, нужно после показа 2 формы которая находится в другом exe
C#
1
UpD.Show(updForm);
, закрыть 1 форму.
0
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
22.09.2017, 07:56 6
Лучший ответ Сообщение было отмечено Ekijah как решение

Решение

Ekijah, ну так все просто, отображаете новую форму и первую убиваете по названию процесса
C#
1
Process.Kill()
0
0 / 0 / 0
Регистрация: 25.01.2017
Сообщений: 45
22.09.2017, 13:28  [ТС] 7
Извините я просто новичёк, а как убить именно тот процесс если Kill не принимает аргументов?
C#
1
2
3
            this.Hide();
            Process pc = new Process();
            pc.Kill();
Это уже во второй форме

Добавлено через 41 минуту
C#
1
2
3
4
5
6
                fm1.Dispose();
                this.Dispose();
                fm1.Close();
                this.Close();
                Application.Exit();
                UpD.Show(updForm);
Вот так он закрывает родительский exe и открывает второй но, при копировании пишет что файл уже используется хотя он используется только родительским exe.
0
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
22.09.2017, 13:42 8
Ekijah, ну или просто, вешаете на кнопку перехода на вторую форму
C#
1
2
3
4
Form1.ActiveForm.Hide();  //Скрываем первую форму
Form2 MyForm2 = new Form2(); //Инициализируем 2 форму
MyForm2.ShowDialog();             // Отображает форму как модальное окно
Close();                                    // Закрываем первую форму
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.09.2017, 13:51 9
Цитата Сообщение от Ekijah Посмотреть сообщение
Извините я просто новичёк, а как убить именно тот процесс если Kill не принимает аргументов?
C#
1
2
3
4
5
6
7
8
 Process currentProcess = Process.GetCurrentProcess();
 
 
            // Get all instances of Notepad running on the local computer.
            // This will return an empty array if notepad isn't running.
            Process[] localByName = Process.GetProcessesByName("notepad");
 
            localByName[0].Kill();
0
0 / 0 / 0
Регистрация: 25.01.2017
Сообщений: 45
22.09.2017, 14:13  [ТС] 10
Цитата Сообщение от kingzfate Посмотреть сообщение
ну или просто, вешаете на кнопку перехода на вторую форму
Переход и так на кнопке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
      private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (MessageBox.Show("Обновление сейчас начнётся, подождите немного.", "Спасибо за терпение!", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
            {
                Download_update_and_installing.Update UpD = new Download_update_and_installing.Update();
                Form1 fm1 = new Form1();
                fm1.Dispose();
                this.Dispose();
                fm1.Close();
                this.Close();
                Application.Exit();
                UpD.Show();
            }
Добавлено через 4 минуты
Проблема в том что при попытке копирования файлов из архива во втором exe
C#
1
2
3
4
5
6
7
8
9
10
11
12
        void CopyFolder(string upd, string basic)
        {
            string[] files = Directory.GetFiles(upd);
 
            foreach (string file in files)
                File.Copy(file, Path.Combine(basic, Path.GetFileName(file)), overwrite: true);       //Вот здесь ошибка
 
            string[] folders = Directory.GetDirectories(upd);
 
            foreach (string folder in folders)
                CopyFolder(folder, Path.Combine(basic, Path.GetFileName(folder)));
        }
Выходит ошибка что файл уже используется хотя он никак не может использоваться вторым exe
0
0 / 0 / 0
Регистрация: 25.01.2017
Сообщений: 45
23.09.2017, 19:26  [ТС] 11
C#
1
2
3
ProcessStartInfo InfoforUPD = new ProcessStartInfo(Application.StartupPath + "/Download update and installing.exe");
Application.Exit();
Process.Start(InfoforUPD);
Вот собственно и решение проблемы
0
23.09.2017, 19:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2017, 19:26
Помогаю со студенческими работами здесь

Открытие и закрытие формы из другой формы
помогите пожалуйста. из формы1 открывается форма2, а при закрытии формы2 должна открываться...

Закрытие формы и открытие другой
Товарищи, помогите, подскажите как закрыть форму. Дело вот вот в чем: есть главная форма: ...

Открытие новой формы и закрытие предыдущей
Есть код, нужно когда пройдет операция открывалось новая форма using System; using System.Linq;...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru