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

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

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

private void App_OnStartup(object sender, StartupEventArgs e)

{

  Application.Current.Properties["GodMode"] = false;

  // Проверить входные аргументы командной строки

  // на предмет наличия флага /GODMODE.

  foreach (string arg in e.Args)

  {

    if (arg.Equals("/godmode",StringComparison.OrdinalIgnoreCase))

    {

      Application.Current.Properties["GodMode"] = true;

      break;

    }

  }

}

Данные уровня приложения доступны из любого места внутри приложения WPF. Для обращения к ним потребуется лишь получить точку доступа к глобальному объекту приложения (через Application.Current) и просмотреть коллекцию. Например, обработчик события Click для кнопки можно было бы изменить следующим образом:

private void Button_Click(object sender, RoutedEventArgs e)

{

  // Указал ли пользователь /godmode?

  if ((bool)Application.Current.Properties["GodMode"])

  {

    MessageBox.Show("Cheater!");  // Мошенник!

  }

}

Если теперь ввести аргумент командной строки /godmode на вкладке Debug (Отладка) в окне свойств проекта и запустить программу, то отобразится окно сообщения и программа завершится. Можно также запустить программу из командной строки с помощью показанной ниже команды (предварительно открыв окно командной строки и перейдя в каталог bin/debug):

WpfAppAllCode.exe /godmode

Отобразится окно сообщения и программа завершится.

На заметку! Вспомните, что аргументы командной строки можно указывать внутри Visual Studio. Нужно просто дважды щелкнуть на значке Properties (Свойства) в окне Solution Explorer, в открывшемся диалоговом окне перейти на вкладку Debug (Отладка) и ввести /godmode в поле Command line arguments (Аргументы командной строки).

Обработка закрытия объекта Window

Конечные пользователи могут завершать работу окна с помощью многочисленных встроенных приемов уровня системы (например, щелкнув на кнопке закрытия X внутри рамки окна) или вызвав метод Close() в ответ на некоторое действие с интерактивным элементом (скажем, выбор пункта меню File Exit (Файл Выход)). Инфраструктура WPF предлагает два события, которые можно перехватывать для выяснения, действительно ли пользователь намерен закрыть окно и удалить его из памяти. Первое такое событие — Closing, которое работает в сочетании с делегатом CancelEventHandler.

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

Указанный делегат ожидает целевые методы, принимающие тип System.ComponentModel.CancelEventArgs во втором параметре. Класс CancelEventArgs предоставляет свойство Cancel, установка которого в true предотвращает фактическое закрытие окна (что удобно, когда пользователю должен быть задан вопрос о том, на самом ли деле он желает закрыть окно или сначала нужно сохранить результаты проделанной работы). Если пользователь действительно хочет закрыть окно, тогда свойство CancelEventArgs.Cancel можно установить в false (стандартное значение). В итоге сгенерируется событие Closed (которое работает с делегатом System.EventHandler), представляющее собой точку, где окно полностью и безвозвратно готово к закрытию.

Модифицируйте класс МаinWindow для обработки упомянутых двух событий, добавив в текущий код конструктора такие операторы:

public MainWindow()

{

  InitializeComponent();

  this.Closed+=MainWindow_Closed;

  this.Closing += MainWindow_Closing;

}

Теперь реализуйте соответствующие обработчики событий:

private void MainWindow_Closing(object sender,

                                System.ComponentModel.CancelEventArgs e)

{

<b>  // Выяснить, на самом ли деле пользователь хочет закрыть окно.</b>

  string msg = &quot;Do you want to close without saving?&quot;;

  MessageBoxResult result = MessageBox.Show(msg,

    &quot;My App&quot;, MessageBoxButton.YesNo, MessageBoxImage.Warning);

  if (result == MessageBoxResult.No)

  {

<b>   // Если пользователь не желает закрывать окно, тогда отменить закрытие.</b>

    e.Cancel = true;

  }

}

private void MainWindow_Closed(object sender, EventArgs e)

{

  MessageBox.Show(&quot;See ya!&quot;);

}

Запустите программу и попробуйте закрыть окно, щелкнув либо на значке X в правом верхнем углу окна, либо на кнопке. Должно появиться диалоговое окно с запросом подтверждения. Щелчок на кнопке Yes (Да) приведет к отображению окна с прощальным сообщением, а щелчок на кнопке No (Нет) оставит окно в памяти.

Перехват событий мыши

Инфраструктура WPF предоставляет несколько событий, которые можно перехватывать, чтобы взаимодействовать с мышью. В частности, базовый класс UIElement определяет такие связанные с мышью события, как MouseMove, MouseUp, MouseDown, MouseEnter, MouseLeave и т.д.

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

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

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

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


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

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

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


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