- •Атрибуты в среде .Net и языке c#.
- •Метаданные
- •Понятие атрибутов
- •Предопределенные и собственные атрибуты
- •Потребители атрибутов
- •Применение атрибутов
- •Сокращенное именование атрибутов
- •Создание собственных атрибутов:
- •Применение собственных атрибутов:
- •Ограничение использования атрибутов:
- •Атрибуты уровня сборки и модуля:
- •Рефлексия атрибутов:
- •Выводы:
- •Язык xml. Классы платформы .Net для работы с xml-данными.
- •Синтаксис xml
- •Работа с xml при помощи System.Xml
- •Работа с xml при помощи linq to xml
- •Выводы:
- •Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io
- •Классы Directory (DirectoryInfo) и File (FileInfo) Некоторые общие свойства классов DirectoryInfo и FileInfo:
- •Дополнительные возможности класса DirectoryInfo
- •Дополнительные возможности класса FileInfo
- •Дополнительные члены File
- •Потоковый ввод-вывод
- •Работа с классом FileStream
- •Работа с классами StreamWriter и StreamReader
- •Классы StringWriter и StringReader
- •Работа с классами BinaryWriter и BinaryReader
- •Выводы:
- •Сериализация. Атрибуты. Стандартные форматы сериализации. Понятие сериализации объектов
- •Роль графов объектов
- •Конфигурирование объектов для сериализации
- •Общедоступные поля, приватные поля и общедоступные свойства
- •Стандартные форматеры сериализации
- •Настройка сериализации с использованием атрибутов
- •Выводы:
- •Понятие бд и субд. Язык sql. Ado.Net как средство доступа из c# к субд. Понятие бд
- •Понятие субд
- •Обзор синтаксиса
- •Подключенный уровень
- •Автономный уровень
- •Основные свойства класса DataSet
- •Основные методы класса DataSet
- •Типы DataColumn и DataRow
- •Основные члены типа DataColumn:
- •Основные члены типа DataRow:
- •Работа с адаптерами данных:
- •Основные члены класса DbDataAdapter:
- •Параллельные вычисления. Многозадачность и многопоточность.
- •Некоторые члены класс Process:
- •Некоторые члены класса ProcessThread
- •Домены приложений
- •Некоторые члены класс AppDomain:
- •Многопоточность. Классификация состояний потока. Средства многопоточного программирования System.Threading.
- •Некоторые члены пространства имен System.Threading
- •Основные члены класс Thread
- •Состояния потока
- •Многопоточное программирование при помощи асинхронных вызовов делегатов
- •Создание вторичных потоков при помощи Thread.Start()
- •Синхронизация с помощью lock
- •Синхронизация с использованием типа System.Threading.Monitor
- •Синхронизация с использованием типа System.Threading.Interlocked
- •Синхронизация с использованием атрибута [Synchronization]
- •Использование System.Threading.Timer
- •Пул потоков clr
- •Библиотека Windows.Forms. Пространства имен. Структура приложения. Элементы управления. События. Иерархия элементов управления.
- •Основные пространства имен Windows Forms
- •Структура приложения WinForms
- •Элементы управления
- •События
- •Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation
- •Типы приложений wpf
- •Основные сборки wpf
- •Построение приложения wpf без xaml
- •Построение приложения wpf с использованием только xaml
- •Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
- •Создание проекта
- •Знакомство с инструментами визуального конструктора wpf
Структура приложения 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!";
}
}
Техника визуальной разработки приложений в WinForms+C#.
Библиотека 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 и наоборот.