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

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

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

177 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

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

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

    1 ... 321 322 323 324 325 326 327 328 329 ... 407
    Перейти на страницу:
    DockPanel.Dock ="Top" HorizontalAlignment="Left" Background="White" 

    BorderBrush ="Black">

      <MenuItem Header="_File" Click ="FileExit_Click" >

        <MenuItem Header ="_Exit" MouseEnter ="MouseEnterExitArea"

           MouseLeave ="MouseLeaveArea"

           Click ="FileExit_Click"/>

      </MenuItem>

      <!-- Новые пункты меню с командами -->

      <MenuItem Header="_Edit">

        <MenuItem Command ="ApplicationCommands.Copy"/>

        <MenuItem Command ="ApplicationCommands.Cut"/>

        <MenuItem Command ="ApplicationCommands.Paste"/>

      </MenuItem>

      <MenuItem Header="_Tools">

        <MenuItem Header ="_Spelling Hints"

            MouseEnter ="MouseEnterToolsHintsArea"

            MouseLeave ="MouseLeaveArea"

            Click ="ToolsSpellingHints_Click"/>

      </MenuItem>

    </Menu>

    Обратите внимание, что свойству Command каждого подэлемента в меню Edit присвоено некоторое значение. В результате пункты меню автоматически получают корректные имена и горячие клавиши (например, <Ctrl+C> для операции вырезания) в пользовательском интерфейсе меню, и приложение теперь способно копировать, вырезать и вставлять текст без необходимости в написании процедурного кода.

    Если вы запустите приложение и выделите какую-то часть текста, то сразу же сможете пользоваться новыми пунктами меню. Вдобавок приложение также оснащено возможностью реагирования на стандартную операцию щелчка правой кнопкой мыши, предлагая пользователю те же самые пункты в контекстном меню.

    Подключение команд к произвольным действиям

    Если объект команды нужно подключить к произвольному событию (специфичному для приложения), то придется прибегнуть к написанию процедурного кода. Задача несложная, но требует чуть больше логики, чем можно видеть в XAML. Например, пусть необходимо, чтобы все окно реагировало на нажатие клавиши <F1>, активизируя ассоциированную с ним справочную систему. Также предположим, что в файле кода для главного окна определен новый метод по имени SetFICommandBinding(), который вызывается внутри конструктора после вызова InitializeComponent():

    public MainWindow()

    {

      InitializeComponent();

      SetF1CommandBinding();

    }

    Метод SetFICommandBinding() будет программно создавать новый объект CommandBinding, который можно применять всякий раз, когда требуется привязать объект команды к заданному обработчику событий в приложении. Сконфигурируйте объект CommandBinding для работы с командой ApplicationCommands.Help, которая автоматически выдается по нажатию клавиши <F1>:

    private void SetF1CommandBinding()

    {

      CommandBinding helpBinding = new CommandBinding(ApplicationCommands.Help);

      helpBinding.CanExecute += CanHelpExecute;

      helpBinding.Executed += HelpExecuted;

      CommandBindings.Add(helpBinding);

    }

    Большинство объектов CommandBinding будет обрабатывать событие CanExecute (которое позволяет указать, инициируется ли команда для конкретной операции программы) и событие Executed (где можно определить код, подлежащий выполнению после того, как команда произошла). Добавьте к типу, производному от Window, следующие обработчики событий (форматы методов регламентируются ассоциированными делегатами):

    private void CanHelpExecute(object sender, CanExecuteRoutedEventArgs e)

    {

      // Если нужно предотвратить выполнение команды,

      // то можно установить CanExecute в false.

      e.CanExecute = true;

    }

    private void HelpExecuted(object sender, ExecutedRoutedEventArgs e)

    {

      MessageBox.Show("Look, it is not that difficult. Just type something!",

                      "Help!");

    }

    В предыдущем фрагменте кода метод CanHelpExecute() реализован так, что справка по нажатию <F1> всегда разрешена; это делается путем возвращения true. Однако если в определенных ситуациях справочная система отображаться не должна, то необходимо предпринять соответствующую проверку и возвращать false. Созданная "справочная система", отображаемая внутри HelpExecute(), представляет собой всего лишь обычное окно сообщения. Теперь можете запустить приложение. После нажатия <F1> появится ваше окно сообщения.

    Работа с командами Open и Save

    Чтобы завершить текущий пример, вы добавите функциональность сохранения текстовых данных во внешнем файле и открытия файлов *.txt для редактирования. Можно пойти длинным путем, вручную добавив программную логику, которая включает и отключает пункты меню в зависимости от того, имеются ли данные внутри TextBox. Тем не менее, для сокращения усилий можно прибегнуть к услугам команд.

    Начните с обновления элемента MenuItem, который представляет меню File верхнего уровня, путем добавления двух новых подменю, использующих объекты Save и Open класса ApplicationCommands:

    <MenuItem Header="_File">

      <MenuItem Command ="ApplicationCommands.Open"/>

      <MenuItem Command ="ApplicationCommands.Save"/>

      <Separator/>

      <MenuItem Header ="_Exit"

          MouseEnter ="MouseEnterExitArea"

          MouseLeave ="MouseLeaveArea" Click ="FileExit_Click"/>

    </MenuItem>

    Вспомните, что все объекты команд реализуют интерфейс ICommand, в котором определены два события (CanExecute и Executed). Теперь необходимо разрешить окну выполнять указанные команды, предварительно проверив возможность делать это в текущих обстоятельствах; раз так, можете определить обработчик события для запуска специального кода.

    Понадобится наполнить коллекцию CommandBindings, поддерживаемую окном. В разметке XAML потребуется применить синтаксис "свойство-элемент" для определения области Window.CommandBindings, в которую помещаются два определения CommandBinding. Модифицируйте определение Window, как показано ниже:

    <Window x:Class="MyWordPad.MainWindow"

      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

      Title="MySpellChecker" Height="331" Width="508"

      WindowStartupLocation ="CenterScreen" >

      <!-- Это информирует элемент управления Window о том, какие

           обработчики вызывать при поступлении команд Open и Save -->

      <Window.CommandBindings>

        <CommandBinding Command="ApplicationCommands.Open"

                        Executed="OpenCmdExecuted"

                        CanExecute="OpenCmdCanExecute"/>

        <CommandBinding Command="ApplicationCommands.Save"

                        Executed="SaveCmdExecuted"

                        CanExecute="SaveCmdCanExecute"/>

      </Window.CommandBindings>

      <!-- Эта панель устанавливает содержимое окна -->

      <DockPanel>

      ...

      </DockPanel>

    </Window>

    Щелкните правой кнопкой мыши на каждом из атрибутов Executed и CanExecute в редакторе XAML и выберите в контекстном меню пункт Navigate to Event Handler (Перейти к обработчику события). Как объяснялось в главе 24, в результате автоматически сгенерируется заготовка кода для обработчика события. Теперь в файле кода C# для окна должны присутствовать четыре пустых обработчика событий.

    Реализация обработчиков события CanExecute будет сообщать окну, что можно инициировать соответствующие события Executed в любой момент, для чего свойство CanExecute входного объекта CanExecuteRoutedEventArgs устанавливается в true:

    private void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

    {

      e.CanExecute = true;

    }

    private void SaveCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

    {

      e.CanExecute = true;

    }

    Обработчики соответствующего события Executed выполняют действительную работу по отображению диалоговых окон открытия и сохранения файла; они также отправляют данные из TextBox в файл. Начните с импортирования пространств имен System.IO и Microsoft.Win32 в файл кода. Окончательный код прямолинеен:

    private void OpenCmdExecuted(object sender, ExecutedRoutedEventArgs e)

    {

      // Создать диалоговое окно открытия файла и

    1 ... 321 322 323 324 325 326 327 328 329 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


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

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

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


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки