Читаем Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation полностью

2.7. Запрос на подтверждение закрытия окна

В классе Window1 измените обработчик Window_Closing:


screen_image_47_507_75


screen_image_48_57_59


Результат. Перед закрытием подчиненного окна win1 отображается стандартное диалоговое окно «Подтверждение» с запросом на подтверждение закрытия (рис. 10). При выборе варианта «Нет» (который предлагается по умолчанию) закрытие подчиненного окна отменяется.


screen_image_48_198_128

Рис. 10. Стандартное диалоговое окно


Комментарий

В обработчике использован один из наиболее полных вариантов метода Show класса MessageBox, позволяющий указать (1) текст запроса, (2) заголовок окна запроса, (3) набор кнопок для данного окна, (4) иконку в окне и (5) кнопку, предлагаемую по умолчанию. Любой параметр, кроме первого, может отсутствовать; при этом должны отсутствовать и все следующие за ним параметры. Если отсутствует второй параметр, то заголовок окна является пустым, если третий, то в окне отображается единственная кнопка «ОК», если четвертый – иконка в окне не отображается, если пятый – кнопкой по умолчанию является первая кнопка.

Недочет 1. При выборе в диалоговом окне варианта «Да» подчиненное окно закрывается, но главное окно не становится активным.

Данный недочет объясняется тем обстоятельством, что «владельцем» диалогового окна MessageBox является то окно, которое было активным в момент отображения на экране окна MessageBox (в нашем случае это подчиненное окно win1), и именно это окно должно активизироваться при закрытии окна MessageBox. Однако при выборе варианта «Да» окно win1 закрывается, и поэтому его активизация оказывается невозможной. В подобной ситуации ни одно окно на экране не будет активным, а главное окно нашей программы, скорее всего, будет скрыто окном среды Visual Studio. Одним из вариантов исправления подобного недочета является явное указание владельца окна MessageBox в дополнительном параметре, который должен располагаться первым в списке параметров. Например, в качестве этого параметра можно указать Owner. В этом случае при выборе варианта «Да» будет успешно активизировано главное окно. Однако это же окно будет активизироваться и при выборе варианта «Нет» (когда подчиненное окно останется на экране), что является неестественным.

Исправление. Замените оператор Hide в методе Window_Closing класса Window1 на следующий составной оператор:


screen_image_49_159_75


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

Исправление. Добавьте в начало метода Window_Closing класса Window1 следующий фрагмент:


screen_image_49_262_75

3. Совместное использование обработчиков событий и работа с клавиатурой: CALC

screen_image_50_128_47

Рис. 11. Окно приложения CALC


3.1. Настройка коллективного обработчика событий

screen_image_50_234_44

Рис. 12. Макет окна MainWindow


screen_image_50_325_59


screen_image_51_56_76


Для кнопки button1 создайте обработчик события Click (напомним, что для этого достаточно ввести в xaml-файле текст Click= и в появившемся выпадающем списке выбрать вариант «New Event Handler»:


screen_image_51_209_75


Дополните созданный в cs-файле обработчик следующим образом:


screen_image_51_244_75


После этого переместите текст Click="button1_Click" в открывающий тег родителя кнопки button1 (т. е. ближайшего к ней компонента StackPanel), дополнив имя Click префиксом Button:


screen_image_51_324_75


Результат. Нажатие на любую кнопку приводит к отображению текста, указанного на этой кнопке, в метке label1 между полями ввода textBox1 и textBox2.

Перейти на страницу:

Похожие книги

Теория государства и права
Теория государства и права

Учебник, написанный в соответствии с курсом «Теория государства и права» для юридических РІСѓР·ов, качественно отличается РѕС' выходивших ранее книг по этой дисциплине. Сохраняя все то ценное, что наработано в теоретико-правовой мысли за предыдущие РіРѕРґС‹, автор вместе с тем решительно отходит РѕС' вульгаризированных догм и методов, существенно обновляет и переосмысливает РІРѕРїСЂРѕСЃС‹ возникновения, развития и функционирования государства и права.Книга, посвященная современной теории государства и права, содержит СЂСЏРґ принципиально новых тем. Впервые на высоком теоретическом СѓСЂРѕРІРЅРµ осмыслены и изложены РІРѕРїСЂРѕСЃС‹ новых государственно-правовых процессов современного СЂРѕСЃСЃРёР№ского общества. Дается характеристика гражданского общества в его соотношении с правом и государством.Для студентов, аспирантов, преподавателей и научных работников юридических РІСѓР·ов.Р

Алла Робертовна Швандерова , Анатолий Борисович Венгеров , Валерий Кулиевич Цечоев , Михаил Борисович Смоленский , Сергей Сергеевич Алексеев

Детская образовательная литература / Государство и право / Юриспруденция / Учебники и пособия / Прочая научная литература / Образование и наука
История Беларуси. С древнейших времен до 2013 г.
История Беларуси. С древнейших времен до 2013 г.

Представлена история Беларуси с древнейших времен до наших дней. Освещаются проблемы этногенеза (происхождения) белорусов, формирования белорусской народности и нации, становления белорусской государственности, социально-экономического, политического и культурного развития белорусских земель в составе Древнерусского государства, Великого Княжества Литовского, Речи Посполитой, Российской империи. Особое внимание уделяется истории советского периода, советской модели модернизации общества, проблемам развития суверенной Республики Беларусь.Первое издание вышло в 2010 г.Для студентов и преподавателей высших учебных заведений, а также учащихся средних специальных и профессионально-технических учебных заведений, лицеев, гимназий, всех, кто интересуется историей Отечества.

Евгений Константинови Новик , Игорь Леонидович Качалов , Наталия Евгеньевна Новик

Детская образовательная литература / История / Учебники и пособия ВУЗов / Книги Для Детей / Образование и наука