Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прога - ответы2.docx
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
206.38 Кб
Скачать

Структура приложения WinForms

Простейшее приложение WinForms может выглядеть подобно следующему примеру:

using System;

using System.Windows.Forms;

namespace SimpleApp

{

// главное окно

class MainWindow : Form

{

public MainWindow() { }

}

// класс программы

class Program

{

static void Main(string[] args)

{

// создаем главное окно

Application.Run(new MainWindow());

}

}

}

Как видно, помимо реализующего точку входа приложений класса Program, создается класс, наследующий от Form. Экземпляр данного класса и представляет собой главное окно запускаемого приложения. Собственно запуск оконного приложения осуществляется при помощи вызова Application.Run(), которому передается ссылка на экземпляр главного окна.

Элементы управления

Элементы управления, как правило, располагаются на форме, образуя иерархическую древовидную структуру. Например, на главном окне могут находиться несколько кнопок и панель, на которой в свою очередь будут расположены несколько чекбоксов и GroupBox, содержащий набор переключателей (RadioButton). Это реализовано при помощи свойства Controls базового класса System.Windows.Forms.Controls, от которого унаследованы все остальные элементы управления. Данное свойство представляет собой коллекцию объектов типа Control и создание иерархической структуры элементов обычно производится повторением следующей последовательности шагов:

  • В классе, порожденном от Form, определяется переменная-член нужного элемента UI.

  • Настраивается внешний вид и поведение элемента UI.

  • Полученный элемент UI добавляется в контейнер ControlCollection нужного родитель с помощью вызова Controls.Add()

События

Реализация функциональности, позволяющая создавать отзывчивые приложения с графическим интерфейсом, основана на использовании событий. Каждый визуальный элемент предоставляет определенный, зачастую довольно большой набор событий, которые позволяют программисту создавать методы, обрабатывающие те или иные изменения состояния элемента. Например:

class MainWindow : Form

{

// Устанавливаем обработчики событий создания окна и щелчка мышью

public MainWindow()

{

this.Load += new EventHandler(MainWindow_Load);

this.Click += new EventHandler(MainWindow_Click);

}

// Обработчик щелка мышью по окну

void MainWindow_Click(object sender, EventArgs e)

{

this.Text = "Click detected!";

}

// Обработчик создания окна

private void MainWindow_Load(object sender, EventArgs e)

{

this.Text = "Main Window!";

}

}

  1. Техника визуальной разработки приложений в WinForms+C#.

  1. Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation

Хотя с помощью Windows Forms было успешно разработано множество полноценных настольных приложений, следует признать, что его программная модель довольно ассиметрична. Просто говоря, сборки System.Windows.Forms.dll и System.Drawing.dll не обеспечивают прямой поддержки многих дополнительных технологий для построения некоторых типов приложений:

Решения .NET 2.0 для обеспечения желаемой функциональности

Построение форм с элементами управления

Windows Forms

Поддержка двухмерной графики

GDI+ (System.Drawing.dll)

Поддержка трехмерной графики

API-интерфейсы DirectX

Поддержка потокового видео

API-интерфейсы Windows Media Player

Поддержка документов нефиксированного формата

Программное манипулирование PDF-файлами

Технология WPF (появившаяся в версии .NET 3.0) специально создавалась для того, чтобы объединить все эти ранее несвязанные задачи в рамках единой объектной модели. Таким образом, теперь вся вышеперечисленная функциональность реализована в WPF.

Возможно, одним из наиболее значительных преимуществ WPF стал способ четкого отделения внешнего вида и поведения приложения от программной логики, управляющей этим. Используя XAML, можно определить пользовательский интерфейс приложения через разметку XML. Эта разметка (в идеале генерируемая с помощью инструментов, таких как Microsoft Expression Blend) может быть затем присоединена к управляемому коду для обеспечения деталей функциональности программы. XAML позволяет определять не только простые элементы пользовательского интерфейса (кнопки, таблицы, окна списков и т.п.), но также двух- и трехмерную графику, анимацию, логику привязки данных и функциональность мультимедиа (вроде воспроизведения видео).

Программная модель WPF отличается от Windows Forms также тем, что для вывода графики GDI не используется. Все операции визуализации выполняются через DirectX, таким образом, WPF приложения автоматически используют аппаратное ускорение для вывода графики. Кроме этого WPF позволяет использовать разнообразные графические эффекты (размытие, сглаживание, прозрачность и т.д.) без необходимости напрямую работать с вызовами DirectX.

Основные возможности WPF:

  • Множество диспетчеров компоновки (намного больше, чем в Windows Forms) для обеспечения исключительно гибкого контроля над размещением содержимого.

  • Использование расширенного механизма привязки данных для связи содержимого с элементами пользовательского интерфейса разнообразными способами.

  • Встроенный механизм стилей, позволяющий определять "темы" для приложения WPF.

  • Использование векторной графики, которая позволяет автоматически изменять размеры содержимого для соответствия размеру и разрешению экрана, принимающего приложение.

  • Поддержка двух- и трехмерной графики, анимации и воспроизведения видео и аудио.

  • Развитый типографский API-интерфейс, поддерживающий документы XML Paper Specification (XPS), фиксированные документы (WYSIWYG), документы нефиксированного формата и аннотации в документах (например, API-интерфейс Sticky Notes).

  • Поддержка взаимодействия с унаследованными моделями графического интерфейса (т.е. Windows Forms, ActiveX и Win32 HWND). Например, можно встраивать специальные элементы управления Windows Forms в приложение WPF и наоборот.