Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Реализация обработчиков раздела меню 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 имена типов одной из технологий следует прописывать полностью или использовать псевдонимы. Иначе в коде могут возникнуть конфликты имен, а если компилятор их не обнаружит, то и серьезные ошибки времени выполнения.

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

Данная страница нарушает авторские права?





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.