Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342

Минимизация и закрытие основного окна вместе с диалоговым

20.06.2011, 09:45. Показов 2856. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день.
Нужно сделать, чтобы основное окно минимизировалось и закрывалось вместе с диалоговым.
Минимизацию я сделала таким образом:
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 partial class MyDialogWindow : Window     
{  
public MyDialogWindow()
        {
            if (Application.Current != null)
            {
                Owner = Application.Current.MainWindow;
            }
            InitializeComponent();
        }
        private void Window_StateChanged(object sender, EventArgs e)
        {
            if (Owner != null)
            {
                if ((this.WindowState == WindowState.Minimized) || (this.WindowState == WindowState.Normal))
                {
                    Owner.WindowState = this.WindowState;
                    this.Visibility = System.Windows.Visibility.Visible;
                }
            }
        }
//еще тут есть код, устанавливающий this.DialogResult = true, например, так:
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
            this.Close();
        }
}
А закрытие - так:
C#
1
2
3
4
5
6
7
8
9
            MyDialogWindow wnd = new MyDialogWindow();
            if (wnd.ShowDialog() == true)
            {
                //какой-то код
            }
            else
            {
                Application.Current.MainWindow.Close();
            }
Проблемы начинаются, если в минимизированном состоянии диалогового окна нажать кнопку "Закрыть". Тогда главное окно не закрывается, и вообще такое чувство, что ShowDialog() ничего не возвращает. Как исправить код, чтобы главное окно в любом случае закрывалось?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2011, 09:45
Ответы с готовыми решениями:

Закрытие дочернего окна приводит к закрытию основного окна
Суть задания "После нажатия левой кнопки мышки в области окна в левом углу окна создать временное окно размером в чверть основного окна....

Закрытие основного окна программы
Хочу что бы при нажатии кнопки закрывалось основное окно моей программы. Во втором окне сделал кнопку private void button1_Click(object...

как отследить закрытие основного окна?
body onunload это понятно что не то, это просто уход со страницы, а вот если юзер нажал "крестик справа", то как-то это можно...

5
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
20.06.2011, 12:15
попробуй обрабатывать событие WindowClosing диалогового окна и в нем устанавливай DialogResult в зависимости от какой-нибудь bool переменной.
1
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
20.06.2011, 12:18  [ТС]
Я думала об этом, но на самом деле есть еще дополнительные параметры, от которых зависит, нужно ли закрывать основное окно. Разве что передавать их в диалоговое окно в конструкторе или после его создания. Есть ли другой способ?
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
20.06.2011, 14:11
Цитата Сообщение от Ereona Посмотреть сообщение
Я думала об этом, но на самом деле есть еще дополнительные параметры, от которых зависит, нужно ли закрывать основное окно
в WindowClosing
C#
1
if (не надо закрывать) e.Cancel = true;
0
 Аватар для Ereona
374 / 135 / 19
Регистрация: 16.07.2010
Сообщений: 342
20.06.2011, 14:17  [ТС]
Это в коде основного окна надо написать? Не выйдет, само окно не знает, должно ли оно закрываться. Сейчас это сделано так:
C#
1
2
3
4
5
6
7
8
9
10
            MyDialogWindow wnd = new MyDialogWindow();
            if (wnd.ShowDialog() == true)
            {
                //какой-то код
            }
            else
            {
                if (надо закрывать)
                    Application.Current.MainWindow.Close();
            }
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
20.06.2011, 14:24
Цитата Сообщение от Ereona Посмотреть сообщение
само окно не знает, должно ли оно закрываться
Не вижу препятствий сделать так, чтобы оно знало. И закрывать по DialogResult'у MyDialogWindow или какой-нибудь переменной в MyDialogWindow
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2011, 14:24
Помогаю со студенческими работами здесь

При открытии дочернего окна, отображаются формы и кнопки с основного окна; как исправить?
при открытии дочернего окна, отображаются формы и кнопки с основного окна, как можно исправить? ...

Закрытие основного меню, при открытии контекстного
Добрый день! Есть основное меню (MenuStrip), которое частично наполняется динамически (toolStripMenuItem). Необходимо подключить...

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

Закрытие одного окна по таймеру с последующем открытием другого окна
Приветствую! Необходимо создать приветственное окно для программы. Сначала должно открываться приветственное окно, висеть примерно 7...

Параметры основного окна
Здраствуйте, хотелось бы узнать можно ли програмно изменить размер начального(основного) окна, задний фон, и другие параметры, или только...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru