Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для sadovnic13
0 / 0 / 0
Регистрация: 01.10.2022
Сообщений: 113

Переход на новое окно

25.02.2023, 21:36. Показов 1222. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю с формами на c++. Имеется окно авторизации и после ввода верных данных нужен переход на новое окно, но есть нюан что управляющая роль остаётся на первой форме. Как сделать так чтобы открывалось новое окно, где пользователь может совершать дальнейшую работу, а первая, стартовая с авторизацией, исчезала, но после нажатия крестика закрытия на дальнейших формах завершалась программа?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2023, 21:36
Ответы с готовыми решениями:

Новое окно программы!
Добрый вечер. Я в замешательстве. Надо написать программу по созданию тестов и оболочки по их прохождению. Столкнулся с немыслимой...

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

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

7
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.02.2023, 21:49
С помощью событий.
Плюс, главная "форма" (окно) все равно должно быть, его можно не отображать, но она будет централизованно управлять событиями и открывать/закрывать (при необходимости) новые окна.
Давно уже с GUI не работал. Но должно получиться.
0
 Аватар для sadovnic13
0 / 0 / 0
Регистрация: 01.10.2022
Сообщений: 113
25.02.2023, 21:54  [ТС]
SmallEvil, тогда такой вопрос, может подскажите. Хочу реализовать в таком случае, при событии закрытия второй формы ,прекращение работы программы, но что написать в событие?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.02.2023, 22:09
sadovnic13, каким фреймворком вы пользуетесь ?
Есть несколько вариантов.
Модальные окна.
Система сообщений. (включая пользовательские).
Зависит от ситуации.
0
 Аватар для sadovnic13
0 / 0 / 0
Регистрация: 01.10.2022
Сообщений: 113
25.02.2023, 22:14  [ТС]
SmallEvil, .NET. Просто я нашел событие закрытия окна и подумал что через него можно реализовать прекращение программы при закрытие второстепенных окон(событие на них). Только вот вопрос, что в событие написать?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.02.2023, 02:04
Цитата Сообщение от sadovnic13 Посмотреть сообщение
Просто я нашел событие закрытия окна и подумал что через него можно реализовать прекращение программы при закрытие второстепенных окон(событие на них).
Все не так просто.
Если другие формы не модальные, то значит они почти независимые.
Явная зависимость в том, что главная форма создает и управляет временем жизни дочерней (какой бы она ни была, модальной или нет).
То есть, скорее всего, нам нельзя из дочерней формы просто вызвать закрытие главной.
Тут нужен асинхронный механизм взаимодействия.

Добавлено через 51 минуту
Сдается мне что в вашем случае стоит использовать модальные окна.
someform.ShowDialog();
Тогда все довольно тривиально.
В других случаях, нужно проявить немного смекалки и усердия.

Добавлено через 2 часа 46 минут
Немножко поигрался.
Создаем форму по клике на кнопку в главной форме :
C#
1
2
3
4
5
6
7
8
9
10
11
    ChildeForm ^ Form2;
 
    System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         Form2 = gcnew ChildeForm;
         Form2->FormClosed += gcnew FormClosedEventHandler(this, &MainForm::frm2_FormClosed);
         Form2->Show(this);
    }
    // Собственно наше событие закрытия формы
    System::Void frm2_FormClosed(System::Object^  sender, System::Windows::Forms::FormClosedEventArgs ^){
        Close();
    }
Создаем в дочерней форме событие закрытия, отвязываем ее от главной формы, убирая замкнутый цикл связи :
C#
1
2
3
    private: System::Void ChildeForm_FormClosing(System::Object^  sender, System::Windows::Forms::FormClosingEventArgs^  e) {
        this->ParentForm->RemoveOwnedForm(this);
    }
Я профан в .NET, но кажется работает.

Добавлено через 26 секунд
Это все С++/CLR

Добавлено через 1 минуту
* С++/CLI
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18302 / 14226 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
26.02.2023, 20:08
sadovnic13, мне нравится решение с созданием окна авторизации в методе Main, и затем уже вызов Application::Run с основной формой.
0
 Аватар для sadovnic13
0 / 0 / 0
Регистрация: 01.10.2022
Сообщений: 113
26.02.2023, 20:35  [ТС]
OwenGlendower, ваше решение тоже имеет смысл, но пока что помог совет выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2023, 20:35
Помогаю со студенческими работами здесь

TcpServer1 и новое окно
Есть программа на которую приходит запрос с сайта, вот так выглядит код программы: Edit1->Text=""; ...

Вывод в новое окно MFC
Здравствуйте! Столкнулась с такой проблемой: мне нужно, чтобы программа при нажатии на кнопку открывала новое окно и выводила данные в...

Не выводит записи в новое окно
Есть QT , который работает с SQL Server. Вобщем по задумке хотел, чтобы при выделении записи, она выводилась в новое окно и раскидывалась...

Не могу создать новое окно
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "QTimer" namespace Ui { class MainWindow; ...

Новое окно при нажатии на кнопку
Есть QWidget с неким контентом и кнопкой. При нажатии на эту кнопку должен открываться другой QWidget. Как это просто реализовать? Сам...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru