Читаем Язык программирования C#9 и платформа .NET5 полностью

В качестве примера обработайте событие MouseMove. Это событие работает в сочетании с делегатом System.Windows.Input.MouseEventHandler, который ожидает, что его целевой метод будет принимать во втором параметре объект типа System.Windows.Input.MouseEventArgs. С применением класса MouseEventArgs можно извлекать позицию (х, у) курсора мыши и другие важные детали. Взгляните на следующее неполное определение:


public class MouseEventArgs : InputEventArgs

{

  ...

  public Point GetPosition(IInputElement relativeTo);

  public MouseButtonState LeftButton { get; }

  public MouseButtonState MiddleButton { get; }

  public MouseDevice MouseDevice { get; }

  public MouseButtonState RightButton { get; }

  public StylusDevice StylusDevice { get; }

  public MouseButtonState XButton1 { get; }

  public MouseButtonState XButton2 { get; }

}


На заметку! Свойства XButton1 и XButton2 позволяют взаимодействовать с "расширенными кнопками мыши" (вроде кнопок "вперед" и "назад", которые имеются в некоторых устройствах). Они часто используются для взаимодействия с хронологией навигации браузера, чтобы перемещаться между посещенными страницами.


Метод GetPosition позволяет получать значение (х, у) относительно какого-то элемента пользовательского интерфейса в окне. Если интересует позиция относительно активного окна, то нужно просто передать this. Обеспечьте обработку события MouseMove в конструкторе класса МаinWindow:


public MainWindow(string windowTitle, int height, int width)

{

  ...

  this.MouseMove += MainWindow_MouseMove;

}


Ниже приведен обработчик события MouseMove, который отобразит местоположение курсора мыши в области заголовка окна (обратите внимание, что возвращенный тип Point транслируется в строковое значение посредством вызова ToString):


private void MainWindow_MouseMove(object sender,

  System.Windows.Input.MouseEventArgs e)

{

  // Отобразить в заголовке окна текущую позицию (х, у) курсора мыши.

  this.Title = e.GetPosition(this).ToString;

}

Перехват событий клавиатуры

Обработка клавиатурного ввода для окна, на котором находится фокус, тоже очень проста. В классе UIElement определено несколько событий, которые можно перехватывать для отслеживания нажатий клавиш клавиатуры на активном элементе (например, KeyUp и KeyDown). События KeyUp и KeyDown работают с делегатом System.Windows.Input.KeyEventHandler, который ожидает во втором параметре тип KeyEventArgs, определяющий набор важных открытых свойств:


public class KeyEventArgs : KeyboardEventArgs

{

  ...

  public bool IsDown { get; }

  public bool IsRepeat { get; }

  public bool IsToggled { get; }

  public bool IsUp { get; }

  public Key Key { get; }

  public KeyStates KeyStates { get; }

  public Key SystemKey { get; }

}


Чтобы проиллюстрировать организацию обработки события KeyDown в конструкторе МаinWindow (как делалось для предыдущих событий), можно реализовать обработчик события, который изменяет содержимое кнопки на информацию о текущей нажатой клавише:


private void MainWindow0s_KeyDown(object sender,

                                  System.Windows.Input.KeyEventArgs e)

{

  // Отобразить на кнопке информацию о нажатой клавише.

  ClickMe.Content = e.Key.ToString;

}


К настоящему моменту WPF может показаться всего лишь очередной инфраструктурой для построения графических пользовательских интерфейсов, которая предлагает (в большей или меньшей степени) те же самые службы, что и Windows Forms, MFC или VB6. Если бы это было именно так, тогда возникает вопрос о смысле наличия еще одного инструментального набора, ориентированного на создание пользовательских интерфейсов. Чтобы реально оценить уникальность WPF, потребуется освоить основанную на XML грамматику — XAML.

Резюме

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

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

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT