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

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 172
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

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

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

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

  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:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

<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);

  }

}

Перейти на страницу:
Комментариев (0)