books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

  this.Title = "You clicked the outer ellipse!";

}

Далее можно выполнять разные действия в зависимости от того, на чем конкретно щелкнул конечный пользователь (на внешнем эллипсе или в любом другом месте внутри области кнопки).

На заметку! Пузырьковые маршрутизируемые события всегда перемещаются из точки возникновения до следующей определяющей области. Таким образом, в рассмотренном примере щелчок на элементе

innerEllipse
привел бы к попаданию события в контейнер
Canvas
, а не в элемент
outerEllipse
, потому что оба элемента являются типами
Ellipse
внутри области определения
Canvas
.

Продолжение или прекращение пузырькового распространения

В текущий момент, когда пользователь щелкает на объекте

outerEllipse
, запускается зарегистрированный обработчик события
MouseDown
для данного объекта
Ellipse
, после чего событие всплывет до события
Click
кнопки. Чтобы информировать WPF о необходимости останова пузырькового распространения по дереву объектов, свойство
Handled
параметра
MouseButtonEventArgs
понадобится установить в
true
:

public void outerEllipse_MouseDown(object sender, MouseButtonEventArgs e)

{

  // Изменить заголовок окна.

  this.Title = "You clicked the outer ellipse!";

  // Остановить пузырьковое распространение.

  e.Handled = true;

}

В таком случае обнаружится, что заголовок окна изменился, но окно

MessageBox
, отображаемое обработчиком события
Click
элемента
Button
, не появляется. По существу пузырьковые маршрутизируемые события позволяют сложной группе содержимого действовать либо как единый логический элемент (например,
Button
), либо как отдельные элементы (скажем,
Ellipse
внутри
Button
).

Роль туннельных маршрутизируемых событий

Строго говоря, маршрутизируемые события по своей природе могут быть пузырьковыми (как было описано только что) или туннельными. Туннельные события (имена которых начинаются с префикса

Preview
— наподобие
PreviewMouseDown
) спускаются от самого верхнего элемента до внутренних областей определения дерева объектов. В общем и целом для каждого пузырькового события в библиотеках базовых классов WPF предусмотрено связанное туннельное событие, которое возникает перед его пузырьковым аналогом. Например, перед возникновением пузырькового события
MouseDown
сначала инициируется туннельное событие
PreviewMouseDown
.

Обработка туннельных событий выглядит очень похожей на обработку любых других событий: нужно просто указать имя обработчика события в разметке XAML (или при необходимости применить соответствующий синтаксис обработки событий C# в файле кода) и реализовать такой обработчик в коде. Для демонстрации взаимодействия туннельных и пузырьковых событий начните с организации обработки события

PreviewMouseDown
для объекта
outerEllipse
:

<Ellipse Name = "outerEllipse" Fill ="Green" Height ="25"

         MouseDown ="outerEllipse_MouseDown"

         PreviewMouseDown ="outerEllipse_PreviewMouseDown"

         Width ="50" Cursor="Hand" Canvas.Left="25" Canvas.Top="12"/>

Затем модифицируйте текущее определение класса С#, обновив обработчики событий (для всех объектов) за счет добавления данных о событии в переменную-член

_mouseActivity
типа
string
с использованием входного объекта аргументов события. В результате появится возможность наблюдать за потоком событий, появляющихся в фоновом режиме.

public partial class MainWindow : Window

{

  string _mouseActivity = string.Empty;

  public MainWindow()

  {

    InitializeComponent();

  }

  public void btnClickMe_Clicked(object sender, RoutedEventArgs e)

  {

    AddEventInfo(sender, e);

    MessageBox.Show(_mouseActivity, "Your Event Info");

<b>    // Очистить строку для следующего цикла.</b>

    _mouseActivity = &quot;&quot;;

  }

  private void AddEventInfo(object sender, RoutedEventArgs e)

  {

    _mouseActivity += string.Format(

      &quot;{0} sent a {1} event named {2}.n&quot;, sender,

      e.RoutedEvent.RoutingStrategy,

      e.RoutedEvent.Name);

  }

  private void outerEllipse_MouseDown(object sender, MouseButtonEventArgs e)

  {

    AddEventInfo(sender, e);

  }

  private void outerEllipse_PreviewMouseDown(object sender,

                                             MouseButtonEventArgs e)

  {

    AddEventInfo(sender, e);

  }

}

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

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*