Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation. Михаил Абрамян. Читать онлайн. Newlib. NEWLIB.NET

Автор: Михаил Абрамян
Издательство: ФГАОУВО "Южный Федеральный Университет"
Серия:
Жанр произведения: Учебная литература
Год издания: 0
isbn: 9785927523757
Скачать книгу
полных вариантов метода 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_59screen_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 между полями