Реализация обработчиков раздела меню File

  • Выделите корень проекта Notepad1 и командой Project/Add Reference подключите сборки System.Windows.Forms.dll и System.Drawing.dll
  • Модифицируйте код файла File.cs следующим образом
using System;using System.Collections.Generic;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes; // Для сборок: System.Windows.Forms.dll, System.Drawing.dllusing sdp = System.Drawing.Printing;// Псевдоним пространства имен using swf = System.Windows.Forms; // Псевдоним пространства именusing PageSetupDialog = System.Windows.Forms.PageSetupDialog;// Псевдоним класса namespace Notepad1{ partial class Window1 { //------------------------------------------------------ // // Обработчики источников задач File // //------------------------------------------------------ private void NewOnExecute(object sender, RoutedEventArgs e) { // Пользователь передумал или была ошибка записи изменений if (!CheckModifiedAndSaveIt()) return; // Изменений нет или они успешно сохранены //txtBox1.Text = String.Empty; // Вариант I //txtBox1.Text = ""; // Вариант II txtBox1.Clear(); // Вариант III strLoadedFile = null; IsModified = false; UpdateTitle(); txtBox1.Focus(); } private void OpenOnExecute(object sender, RoutedEventArgs e) { if(DisplayOpenDialog()) txtBox1.CaretIndex = txtBox1.Text.Length;// Курсор в конец txtBox1.Focus();// Передача фокуса } private void SaveOnExecute(object sender, RoutedEventArgs e) { if (String.IsNullOrEmpty(strLoadedFile)) DisplaySaveDialog(String.Empty); else SaveFile(strLoadedFile); txtBox1.Focus(); } private void SaveAsOnExecute(object sender, RoutedEventArgs e) { DisplaySaveDialog(strLoadedFile); txtBox1.Focus(); } private void PageSetupOnExecute(object sender, RoutedEventArgs e) { // Ограничемся только показом окна Windows Forms PageSetupDialog dlg = new PageSetupDialog(); // Без настроек не работает. Зададим хотя бы по умолчанию dlg.PageSettings = new sdp.PageSettings(); dlg.PrinterSettings = new sdp.PrinterSettings(); dlg.ShowDialog(); txtBox1.Focus(); } private void PrintPreviewOnExecute(object sender, RoutedEventArgs e) { sdp.PrintDocument document = new sdp.PrintDocument(); document.DocumentName = strLoadedFile; swf.PrintPreviewDialog dlg = new swf.PrintPreviewDialog(); dlg.Document = document; dlg.UseAntiAlias = true;// Включить сглаживание dlg.ShowDialog(); txtBox1.Focus(); } private void PrintOnExecute(object sender, RoutedEventArgs e) { sdp.PrintDocument document = new sdp.PrintDocument(); document.DocumentName = strLoadedFile; swf.PrintDialog dlg = new swf.PrintDialog(); dlg.Document = document; dlg.ShowDialog(); txtBox1.Focus(); } private void ExitOnExecute(object sender, RoutedEventArgs e) { if (!CheckModifiedAndSaveIt()) return; // Пользователь передумал выходить Close(); } }}

Обратите внимание на использование псевдонимов пространств имен добавленных к проекту библиотечных сборок. Еще раз вспомним, что при совместном применении пользовательских интерфейсов WPF и Windows Forms имена типов одной из технологий следует прописывать полностью или использовать псевдонимы. Иначе в коде могут возникнуть конфликты имен, а если компилятор их не обнаружит, то и серьезные ошибки времени выполнения.

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: