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
Перейти на страницу:

              Canvas.Left="25" Canvas.Top="12"/>

          <Ellipse Name = "innerEllipse" Fill ="Yellow"

              Height = "15" Width ="36"

              Canvas.Top="17" Canvas.Left="32"/>

        </Canvas>

      </StackPanel>

    </Button>

  </Grid>

</Window>

Обратите внимание, что в открывающем определении элемента

Button
было обработано событие
Click
за счет указания имени метода, который должен вызываться при возникновении события. Событие
Click
работает с делегатом
RoutedEventHandler
, который ожидает обработчик события, принимающий
object
в первом параметре и
System.Winodws.RoutedEventArgs
во втором. Реализуйте такой обработчик:

public void btnClickMe_Clicked(object sender, RoutedEventArgs e)

{

<b>  // Делать что-нибудь, когда на кнопке произведен щелчок.</b>

  MessageBox.Show(&quot;Clicked the button&quot;);

}

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

Ellipse
, желтый элемент
Ellipse
, элемент
Label
или поверхность элемента
Button
). В принципе это хорошо. Только представьте, насколько громоздким оказалась бы обработка событий WPF, если бы пришлось обрабатывать событие
Click
для каждого из упомянутых подэлементов. Дело не только в том, что создание отдельных обработчиков событий для каждого аспекта
Button
— трудоемкая задача, а еще и в том, что в результате получился бы сложный в сопровождении код.

К счастью, маршрутизируемые события WPF позаботятся об автоматическом вызове единственного обработчика события

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

Точнее говоря, маршрутизируемое событие может использовать три стратегии маршрутизации. Если событие перемещается от точки возникновения вверх к другим областям определений внутри дерева объектов, то его называют пузырьковым событием. И наоборот, если событие перемещается от самого внешнего элемента (например,

Window
) вниз к точке возникновения, то его называют туннельным событием. Наконец, если событие инициируется и обрабатывается только элементом, внутри которого оно возникло (что можно было бы описать как нормальное событие CLR), то его называют прямым событием.

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

В текущем примере, когда пользователь щелкает на внутреннем овале желтого цвета, событие

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

Благодаря такому шаблону пузырьковых маршрутизируемых событий не придется беспокоиться о регистрации специфичных обработчиков события

Click
для всех членов составного элемента управления. Однако если необходимо выполнить специальную логику обработки щелчков для нескольких элементов внутри того же самого дерева объектов, то это вполне можно делать.

В целях иллюстрации предположим, что щелчок на элементе управления

outerEllipse
должен быть обработан в уникальной манере. Сначала обработайте событие
MouseDown
для этого подэлемента (графически визуализируемые типы вроде
Ellipse
не поддерживают событие
Click
, но могут отслеживать действия кнопки мыши через события
MouseDown
,
MouseUp
и т.д.):

&lt;Button Name=&quot;btnClickMe&quot; Height=&quot;75&quot; Width = &quot;250&quot;

    Click =&quot;btnClickMe_Clicked&quot;&gt;

  &lt;StackPanel Orientation =&quot;Horizontal&quot;&gt;

    &lt;Label Height=&quot;50&quot; FontSize =&quot;20&quot;&gt;Fancy Button!&lt;/Label&gt;

    &lt;Canvas Height =&quot;50&quot; Width =&quot;100&quot; &gt;

    &lt;Ellipse Name = &quot;outerEllipse&quot; Fill =&quot;Green&quot;

        Height =&quot;25&quot; <b>MouseDown =&quot;outerEllipse_MouseDown&quot;</b>

        Width =&quot;50&quot; Cursor=&quot;Hand&quot; Canvas.Left=&quot;25&quot; Canvas.Top=&quot;12&quot;/&gt;

    &lt;Ellipse Name = &quot;innerEllipse&quot; Fill =&quot;Yellow&quot; Height = &quot;15&quot; Width =&quot;36&quot;

        Canvas.Top=&quot;17&quot; Canvas.Left=&quot;32&quot;/&gt;

    &lt;/Canvas&gt;

  &lt;/StackPanel&gt;

&lt;/Button&gt;

Затем реализуйте подходящий обработчик событий, который в демонстрационных целях будет просто изменять свойство

Title
главного окна:

public void outerEllipse_MouseDown(object sender, MouseButtonEventArgs e)

{

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

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

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

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


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

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


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

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

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


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