Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 147

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 320 >> Следующая

354 Глава 8 • Окна становятся лучше: введении в Windows.Forms Таблица 8.4. События типа Application
Событие_Назначение_
ApplicationExit Возникает в тот момент, когда приложение закрывается
Idle Возникает в тот момент, когда все текущие сообщения в очереди обработаны
їй приложение переходит в режим бездействия
ThreadExit. Возникает при завершении работы в приложении, Если работу
завершает главный поток приложения, это событие возникает до события _ApplicationExit_
Кроме того, в типе 1 on определены события, представленные в табл. 8,4.
Работаем с классом Application
Чтобы проиллюстрировать возможности класса '• Iw і ..: (и познакомиться с обработкой событий в Windows Forms), мы внесем некоторые изменения в только что созданное нами приложение с единственным пустым главным окном. Наша задача — сделать і ш, чтобы приложение:
• отображало при запуске некоторую информацию о самом себе;
• реагировало на событие': i cati t;
• выполняло некоторые предварительные действия (препроцессинг) для сообщения W^LBUTTONDQWN.
Для начала дополним манифест нашего приложения несколькими атрибутами: именем нашего замечательного программного продукта и именем компании (про атрибуты подробно рассказывалось в предыдущей главе):
// Два атрибута для нашей сборки Iasserobly.'AssemblyCompany("Intertech. Inc.")] [assembly:AsseniblyProductC"A Better Window")]
Обращаться к значениям этих атрибутов мы будем прямо из конструктора
нашей формы. Вначале вы получим всю необходимую нам информацию при помощи свойств типа Application, а затем выведем ее при помощи метода Message-Box. Show():
namespace AppClassExample
(
using System:
¦using System.Windows.Forms: using System. Reflect і on; public class MainForm -. Form {
public MainformO {
GetStatsO:
}
private GetStatsO {
MessageBox. Showt Appl і cati on .Compan:/Name. "Company:"): MessageBox.Show(Application.Producl;Nan)e. "App Name:");
Класс Systeiri.Windows.Forrns.AppiicatiOT! 355
t^sageBoA.Sho>f(A?plicatior..StartopPath. "I live here:');
Теперь при запуске приложения мы получим три окна сообщения с нужной нам информацией. Последнее из этих окон представлено на рис. 8.9.
D:\C3harpai»kiLebs\Cr>apterB\AppCles4Exomple\bri\LieBug
..OK
Рис. 8.9. Получение информации при помощи типа Application
Реагируем на событие ApplicationExit
Далее мы настроим нашу форму таким образом, чтобы она реагировала на событие ApplicationExit. События в приложениях Windows Forms - это обычные события СЖ и реагирование на них производится точно таким же образом, как это было описано в главе 5. Таким образом, если мы хотим настроить реакцию нашего приложения на событие нам нужно создать реагирующий метод и местить его в делегат при помощи оператора Выглядеть это может так:
public class Ma in Form : Form {
public MairFonii(j (
Il Перехватив аен событие Appl 1catlor?x1t
Application.ApplicationExit +- new EventHandler(FormJ)nExit):
}
II Метод, запускаеиый обработчиком событий
private void Form_OnExit(objec sender, EventArgs evArgs)
{
MessageBox.Shon("See ya!", "This app is dead...");
}
I
Обратите внимание, что обработчиксобытий Ap р 1 і с at і о n Exi t должен соответствовать по принимаемым параметрам делегату типа
// Многие события приложений Windows Forms используют делегат Event Handler,
II который требует наличия двух параметров:
public delegate void EventHandlertobject sender. EventArgs e):
У первого параметра этого делегата тип System. Object. Он представляет объект, отправляющий событие. Второй параметр, который относится к типу EventArgs, содержит информацию о самом событии. Например, если событие возникло вследствие щелчка мышью, то EventArgs будет содержать информацию, специфическую для событий мыши (например, координаты х и у указателя мыши в этот момент).
356 Глава 8 • Окна становятся лучше: введение в Windows.Forms
Препроцессинг сообщений при помощи класса Application
Последнее, что осталось сделать в нашем лри>;еps; — реализовать препроцессинг
для сообщения WM L BUTTON DOWN. Это стандартное сообщение Windows передается, при щелчке левой кнопкой мыши на любой области формы (или элемента управления, который должен реагировать па это событие). Далее в этой главе будет представлен гораздо более простой способ реагирования на это событие, но пока нам важно разобраться в препроцессинге сообщений, поэтому мы пойдем не самым простым, но самым наглядным путем.
Если мы хотим осуществлять фильтрацию сообщений в приложении .NET, нам придется создать новый класс, реализующий интерфейс IMessageFi Iter. Это совсем не сложно, учитывая то, что в этом интерфейсе определен только один метод — ¦ PreFilterMessage(). Чтобы сообщение отфильтровывалось, этот методдолжен возвращать true, если метод возвратит false, то реакция на сообщение будет производиться обычным порядком.
Метод PreFilterMessageO должен принимать в.качестве параметра объект типа Message. Msg с числовой информацией о номере сообщения Windows (в нашем случае для kM_L BUTTON DOWN этот номер равен 513). Например:
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100