Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376

Как далее поднять MainWindow?

26.01.2025, 13:32. Показов 3919. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем,


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
{
    if()
     {
      //код
     }
    else()
    {
     // MesageBox.Show("не работает")
    }
 
}
catch
{
 
 
}
MainWindow далее подымается, если закомментировать messagebox. Если оставить ничего не открывается.

Как получить и сообщение и после того как его квитируешь получить и MainWindow?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2025, 13:32
Ответы с готовыми решениями:

Связать переменные из mainwindow.h и mainwindow.cpp
Здравствуйте! Подскажите, пожалуйста: В файле mainwindow.cpp есть некоторая переменная state (переменная состояния), которой...

undefined reference to `mainwindow::~mainwindow()'
Не понимаю из-за чего ошибка mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include...

Invalid use of 'Ui::MainWindow::MainWindow
Доброго времени суток, не получается создать обработчик для пунктов меню созданного в дизайнере выдает ошибку: mainwindow.cpp:13: ошибка:...

47
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
26.01.2025, 17:19
Лучший ответ Сообщение было отмечено Berendom как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Berendom Посмотреть сообщение
с MessageBox получилось, а с своим WpfMessageBox MainWindow не подымается.
Это зависит от режима закрытия приложения Application.ShutdownMode.
По умолчанию установлен режим OnMainWindowClose.
Основное окно это то на которое указывает свойство Application.MainWindow.
Если значение свойство не задаётся "руками", то ему присваивается ссылка на первое открываемое в сеансе приложения Window (далее WPF-Window).
MessageBox не является WPF-Window, поэтому его открытие и закрытие никак не влияет на свойство Application.MainWindow и, соответственно, закрытие приложение.

Ваше же кастомное окно сообщений WpfMessageBox - это уже WPF-Window. И так как оно первое открывается в сеансе приложения, то оно автоматически считается MainWindow. И после его закрытия, так как режим задан OnMainWindowClose, автоматически вызывается закрытие приложения.


Решение: грамотно "в ручную" управлять Application.MainWindow и Application.ShutdownMode.

Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ShutdownMode = ShutdownMode.OnExplicitShutdown;
try
{
    if()
     {
      //код
     }
    else()
    {
     WpfMessageBox.Show("всё работает");
    }
 
}
catch
{
 
 
}
 
MainWindow = new SomeWindow();
ShutdownMode = ShutdownMode.OnMainWindowClose;
MainWindow.Show();
P.S. Что касается общих рекомендаций, то советую сразу открывать основное окно приложения - пусть там будет хотя бы стартовая иконка приложения, и уже на его фоне показывать окна сообщения. Это и решит проблему с режимом закрытия, и выглядеть будет более эстетично, дружелюбно.
4
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
26.01.2025, 17:52  [ТС]
Добавлено через 12 минут
И "особо шарящие" и не "шарящие" в WPF все пролетели как стая напильников.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
ShutdownMode = ShutdownMode.OnExplicitShutdown;
Элд Хасп, узрел разницу между WpfMessageBox и MessageBox,
наверное читал, что мне нужно и услышал меня.


Нет слов. Только поклон.

Одна строчка кода.Решено.

По рекомендации, посмотрю как оно будет на фоне окна.

и кода этого (принудительного) не надо,

C#
1
2
3
MainWindow = new SomeWindow();
ShutdownMode = ShutdownMode.OnMainWindowClose;
MainWindow.Show();
все идет автоматом.
0
26.01.2025, 17:54

Не по теме:

Цитата Сообщение от Berendom Посмотреть сообщение
И "особо шарящие" и не "шарящие" в WPF все пролетели как стая напильников.
Оригинальный способ отблагодарить форумчан за попытку помочь.

0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
26.01.2025, 17:57

Не по теме:

Цитата Сообщение от Элд Хасп Посмотреть сообщение
то касается общих рекомендаций, то советую сразу открывать основное окно приложения - пусть там будет хотя бы стартовая иконка приложения, и уже на его фоне показывать окна сообщения. Это и решит проблему с режимом закрытия, и выглядеть будет более эстетично, дружелюбно.
+1 Окно нужно показывать сразу, чтобы юзер понимал что приложение запустилось.



Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ваше же кастомное окно сообщений WpfMessageBox - это уже WPF-Window. И так как оно первое открывается в сеансе приложения, то оно автоматически считается MainWindow. И после его закрытие, так как режим задан OnMainWindowClose, автоматически вызывается закрытие приложения.
А блин -- точно. Помню как прикольнулся с этим, когда хотел добавить окно авторизации, и после его закрытия грохалось всё приложение. Не знал что там можно режим преключать. Я так понимаю нужно как-то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
 
            ShutdownMode = ShutdownMode.OnExplicitShutdown;
            try
            {
                // throw new Exception();
            }
            catch (Exception ex)
            {
 
                _ = WpfMessageBox.Show("Eror", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            ShutdownMode = ShutdownMode.OnMainWindowClose;
 
            MainWindow = new MainWindow();
            MainWindow.Show();
        }
    }
Цитата Сообщение от Berendom Посмотреть сообщение
запуска MainWindow нет.
запуск 100% есть, просто дальше сразу следует закрытие всего приложения. Гляньте пример выше, скорее всего должно помочь.

Добавлено через 1 минуту
Цитата Сообщение от Berendom Посмотреть сообщение
И "особо шарящие" и не "шарящие" в WPF все пролетели как стая напильников.
Да не вопрос, учту на будущее что вам не стоит пытаться помогать.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 18:24
На самом деле комбинацией ShutdownMode и переключением главного окна в App удобно манипулировать показом/НЕ показом окон.
Я давно так делаю, если приложения требуют авторизации, например, или предварительного окна каких-либо параметров. При этом основное окно не показываю (в принципе, если уж запустилось какое-то окно, то явно приложение стартануло нормально).
0
26.01.2025, 18:50

Не по теме:

Цитата Сообщение от wizard41 Посмотреть сообщение
На самом деле комбинацией ShutdownMode и переключением главного окна в App удобно манипулировать показом/НЕ показом окон.
Хз, кажись удобней SingelWindow + UserControl и не чудить с главным окном. Да и само окно делать максимально пустым, чтобы закинуть на него можно было что угодно и когда угодно. Это позволит создать его в самом начале, и не страдать. Т.е. можно сделать так

C#
1
2
3
4
5
6
7
8
9
10
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
 
            MainWindow = new MainWindow();
 
             _ = MessageBox.Show("Error");
            MainWindow.DataContext = new MainModel();
            MainWindow.Show();
        }
Собственно в первый раз когда наткнулся на эту "проблему" так и решал вопрос. Режим OnExplicitShutdown|OnLastWindowClose я бы использовал только в случае если на страте мне нужно показать несколько окон, которые ВСЕ являются главными (скажем каждый выполняет свою задачу, которую юзер может отменить). Ну или мне по каким-то причинам запретили создавать окно, и нужно выводить только уведомления.

0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 18:57
Wolfdp, SingelWindow + UserControl конечно вариант, но пока не видно что он чем-то "легче"...
По мне так довольно логична такая система: при запуске приложения появилось окно 1 (авторизация к примеру). Т.е. только это окно и его VM, больше ничего не создается. Далее, если пользователь не прошел авторизацию, то какой смысл что-то там показывать на заднем плане? Закроет это окно и всего делов.
А если прошел, то это окно закрывается (не Hide, а именно полностью уничтожается), главное окно смещается на то, которое будет сейчас открыто - основное окно показывается...
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,958
Записей в блоге: 14
26.01.2025, 19:00
Цитата Сообщение от Wolfdp Посмотреть сообщение
Да не вопрос, учту на будущее что вам не стоит пытаться помогать.
Там ещё в 3 посте засветился алгоритм белагочи
Цитата Сообщение от wizard41 Посмотреть сообщение
то какой смысл что-то там показывать на заднем плане?
И не надо ничего показывать. Всё главное окно может содержать только вью логина.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 19:04
Цитата Сообщение от Rius Посмотреть сообщение
засветился алгоритм белагочи

Цитата Сообщение от Rius Посмотреть сообщение
Всё главное окно может содержать только вью логина
Да это понятно что может. Я говорю именно за два разных окна.
Условно, основное окно по дефолту размером не меньше чем 900х600, скажем. И тут мы показываем в его центре небольшие поля для ввода логина и пароля... Не очень как-то.

Не по теме:

А что с разметкой форума случилось - посты как в шашках смещены? Или только у меня такое?

0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,958
Записей в блоге: 14
26.01.2025, 19:07
Цитата Сообщение от wizard41 Посмотреть сообщение
Я говорю именно за два разных окна.
Так и не нужно 2 окна!
Цитата Сообщение от wizard41 Посмотреть сообщение
И тут мы показываем в его центре небольшие поля для ввода логина и пароля... Не очень как-то.
Да норм. Уже все давно привыкли, что всё в одном окне происходит (размер и масштаб специально сделал в разнос):

Зато - никаких танцев с бубном вокруг z-order окон, типа упавших на задний план messagebox, которые ничем не поднять.

Не по теме:

Цитата Сообщение от wizard41 Посмотреть сообщение
А что с разметкой форума случилось - посты как в шашках смещены? Или только у меня такое?
Апдейт на днях был. Дизайн немного изменился.

0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 19:11
Цитата Сообщение от Rius Посмотреть сообщение
Так и не нужно 2 окна!
я тоже самое говорил клиенту. Не хочет так. Т.е. это не моя прихоть, поэтому, как ни крути, такие варианты тоже нужно/можно обсуждать...

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
Дизайн немного изменился.
Ну понял, ок.

0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
26.01.2025, 19:15  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
Да не вопрос, учту на будущее что вам не стоит пытаться помогать.


Цитата Сообщение от Wolfdp Посмотреть сообщение
ТС просто не шибко ориентируется в WPF от слова "совсем", и пытается методом тыка угадать правильный вариант.

Не преувеличивайте свою значимость на этой ветке. Здесь толковых специалистов, обладающих талантом вникать в вопрос, единицы, их можно посчитать по пальцам одной руки. Вы не в их числе.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 19:16
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 19:19
Т.е. у этого "первого" окна может быть еще какой-то дополнительный функционал, не связанный с основным приложением. Если делать одно окно, то будет перетрубация вьюмоделей/моделей. Если делать два окна, то будут две независимые вьюмодели/модели.
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,958
Записей в блоге: 14
26.01.2025, 19:21
Если делать одно окно и аккуратно разделить функциональность, то разницы не будет. Хоть она одна, хоть 100.
Но, само собой, это реализовать сложнее.
Примером такого интерфейса являются вездесущие сейчас сайты.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
26.01.2025, 19:27
Rius, я именно так и сделал сначала - все в одном. Но заказчик (художник) - "он так видит"... Сказано было убрать все из главного окна и сделать дополнительное.
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,958
Записей в блоге: 14
26.01.2025, 19:29
Так и я не про заказчиков с их тараканами, а про возможность в принципе.
0
26.01.2025, 20:02

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
Там ещё в 3 посте засветился алгоритм белагочи
неужели твин?! Ай-я-я-яй... всячески одобряю, хоть администрация с этим и не согласна. XD

Цитата Сообщение от wizard41 Посмотреть сообщение
я тоже самое говорил клиенту. Не хочет так. Т.е. это не моя прихоть, поэтому, как ни крути, такие варианты тоже нужно/можно обсуждать...
Обсуждать конечно можно, и в этом обсуждении я и говорю -- в идеале стоит избегать таких подходов. Если заказчик с тебя требует говнокодить -- тут уже конечно не до кошерной архитектуры. Ну или подход ТСа, когда уже есть код, и нужно подогнать существующие реали под задачу (почему бы и нет).

0
26.01.2025, 20:04

Не по теме:

Wolfdp, не твин, просто поведение подобное.

0
26.01.2025, 20:13

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
не твин, просто поведение подобное.
А, понял. Под "алгоритм белагочи" подразумевался стиль общения... >.<
Окей, а то ща из-за моих слов начнутся теории заговора. XD

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2025, 20:13

Расположить элементы массива так, чтобы первыми шли положительные элементы, далее - отрицательные, далее - нули
В заданном целочисленном вектореАп расположить элементы так, чтобы первыми шли положительные элементы, далее - отрицательные, далее - нули,...

Как закрыть окно MainWindow?
Здравствуйте У меня возникла следующая проблема: Не могу нормально удалить окно MainWindow. Функция close() вообще ничего ни...

Как убрать рамки в MainWindow
Добрый день! Появился простой, может быть, вопрос у зеленого в Qt: как убрать рамки около краев MainWindow? На скрине все видно

Как в WPF в MainWindow отключить ALT + F4?
Как в WPF в MainWindow отключить ALT + F4?

Как закрыть программу из конструктора mainwindow?
Как закрыть программу из конструктора mainwindow?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru