Слайды и текст доклада
Pic.1
Язык С# Построение оконных приложений Лекция #7
Pic.2
Способы создания приложения Windows Вручную и откомпилировать csc. exe WinDes. exe из . NET SDK Visual Studio. NET
Pic.3
Обзор пространства имен Windows. Forms
Pic.4
Создание главного окна приложения namespace MyRawWindow { using System; using System. Windows. Forms; public class MainWindow : Form { public MainWindow(){} // Запускаем приложение public static int …
Pic.5
Визуальная разработка
Pic.6
Фрагмент кода public class Form1 : System. Windows. Forms. Form { private System. ComponentModel. Container components = null; public Form1() { InitializeComponent(); // TODO here } protected …
Pic.7
Методы объекта Application
Pic.8
Свойства объекта Application
Pic.9
События объекта Application
Pic.10
Добавление атрибутов в файл AssemblyInfo. cs // Атрибуты для нашей сборки [assembly:AssemblyCompany("Intertech, Inc. ")] [assembly:AssemblyProduct("A Better Window")] [assembly: …
Pic.11
Работа с классом Application namespace AppClassExample { using System; using System. Windows. Forms; using System. Reflection; public class MainForm : Form { . . . public MainForm() { GetStats(); } …
Pic.12
Реагируем на событие ApplicationExit public class MainForm : Form { . . . public MainForm() { . . . // Перехватываем событие ApplicationExit Application. ApplicationExit += new …
Pic.13
Препроцессинг сообщений // Мы должны указать это пространство имен! using Microsoft. Win32; // Создаем класс — фильтр сообщений public class MyMessageFilter : IMessageFilter { public bool …
Pic.14
Добавление фильтра public class MainForm : Form { private MyMessageFilter msgFilter = new MyMessageFilter(); . . . public MainForm() { . . . // Добавляем (регистрируем) фильтр сообщений Application. …
Pic.15
Анатомия формы Структура оконного приложения
Pic.16
Цепочка наследования класса Form
Pic.17
Класс Component реализация интерфейса IComponent public interface IComponent: IDisposable { // Свойство Site public ISite Site { virtual get; vitural site;} // Событие Disposed public event …
Pic.18
Класс Component реализация интерфейса ISite, который позволяет элементу управления взаимодействовать с контейнером, в котором он расположен public interface ISite: IServiceProvider { // Свойства …
Pic.19
Переопределение метода Dispose public override void Dispose() { base. Dispose(); // Здесь выполняем необходимые действия }
Pic.20
Класс Control Класс Control определяет общие черты всех типов, относящихся к элементам графического интерфейса
Pic.21
Важные свойства объекта Control
Pic.22
Важные методы объекта Control
Pic.23
Важные методы объекта Control
Pic.24
Настройка стиля формы public enum ControlStyles { AllPaintingToWmPaint, CacheText, ContainerControl, EnableNotifyMessage, FixedHeight, FixedWidth, Opaque, ResizeRedraw, Selectable, StandardClick, …
Pic.25
Настройка стиля формы public enum ControlStyles { AllPaintingToWmPaint, CacheText, ContainerControl, EnableNotifyMessage, FixedHeight, FixedWidth, Opaque, ResizeRedraw, Selectable, StandardClick, …
Pic.26
Важные события класс Control
Pic.27
Работаем с классом Control // Необходимо для использования типа Rectangle using System. Drawing; . . . public class MainForm : Form { public static int Main(string[] args) { Application. Run(new …
Pic.28
Завершение работы приложения protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) components. Dispose(); } base. Dispose( disposing ); MessageBox. …
Pic.29
Перехват событий от мыши public class MainForm : Form { public static int Main(string[] args) { Application. Run(new MainForm()); return 0; } public MainForm() { Top = 100; Left = 75; Height = 100; …
Pic.30
Перехват событий от мыши public class MainForm : Form { . . . public MainForm() { . . . // Отслеживаем движения мыши (вместе с событием MouseUp this. MouseUp += new MouseEventHandler(OnMouseUp); …
Pic.31
2-й вариант public class MainForm : Form { public MainForm() { // Сейчас обработчики событий нам уже нужны // this. MouseUp += new MouseEventHandler(OnMouseUp); // this. MouseUp += new …
Pic.32
Реагируем на события клавиатуры public class MainForm : form { . . . public MainForm() { Top = 100; Left = 75; Height = 100; Width = 500; MessageBox. Show(Bounds. ToString(), "Current …
Pic.33
Свойства класса KeyEventArgs
Pic.34
Дополнительные свойства класса Control
Pic.35
Дополнительные методы класса Control
Pic.36
Дополнительные события класса Control
Pic.37
Возможности класса Control using System; using System. Windows. Forms; using System. Drawing; // Для типов Color, Brush и Font public class MainForm : Form { . . . public MainForm() { // …
Pic.38
Событие Paint и PaintEventArgs ClipRectangle – прямоугольная область вывода изображения Graphics – контекст вывода изображения
Pic.39
Класс ScrollableControl // Этот код помещается в конструктор класса // InitializeComponent() // Для работы с классом Size также нужна ссылка // на пространство имен System. Drawing this. AutoScroll = …
Pic.40
Класс ContainerControl
Pic.41
Некоторые свойства класса Form (2)
Pic.42
Некоторые свойства класса Form
Pic.43
Некоторые методы класса Form
Pic.44
Некоторые события класса Form
Pic.45
Иллюстрация возможностей класса Form public class MainForm: Form { . . . public MainForm() { // Настраиваем исходный облик нашей формы BackColor = Color. LemonChiffon; // Цвет фона: Text = "My …
Pic.48
Члены вложенного класса Menu$MenuItemCollection
Pic.49
Создание меню программным способом public class MainForm: Form { private MainMenu mainMenu; // Главное меню для Form public MainForm() { mainMenu = new MainMenu(); // Создаем главное меню // Создаем …
Pic.50
public class MainForm : Form // Простое приложение с главным меню public class MainForm : Form // Простое приложение с главным меню { // Главное меню для формы private MainMenu mainMenu; // Запускаем …
Pic.51
Добавляем еще одно меню верхнего уровня public class MainForm : Form { private MainMenu mainMenu; . . . public MainForm() { // Создаем меню File - Exit MenuItem miFile = mainMenu. MenuItems. …
Pic.52
Создаем контекстное меню I namespace MainForm { // Вспомогательная структура для установки размера шрифта internal struct TheFontSize { public static int Huge = 30; public static int Normal = 20; …
Pic.53
Создаем контекстное меню II public MainForm() { // Прежде всего создаем контекстное меню popUpMenu = new ContextMenu(); // Теперь добавляем в контекстное меню элементы popUpMenu. MenuItems. …
Pic.54
Создаем контекстное меню III // Обработчик для PopUp_Clicked (всех трех пунктов) private void PopUp_Clicked(object sender, EventArgs e) { // Ориентируемся на строковое имя выбранного пользователем …
Pic.55
Дополнительные возможности меню
Pic.56
Дополнительные возможности меню
Pic.57
Установка флажка в контекстном меню I public class MainForm : Form { // Текущий размер шрифта private int currFontSize = TheFontSize. Normal; // Контекстное меню для формы private ContextMenu …
Pic.58
Установка флажка в контекстном меню II // Конструктор формы public MainForm() { // Настраиваем исходный облик формы Text = "PopUp Menu"; CenterToScreen(); // Прежде всего создаем …
Pic.59
Установка флажка в контекстном меню III private void PopUp_Clicked(object sender, EventArgs e) { // Снимаем флажок с выбранного в настоящий момент пункта currentCheckedItem. Checked = false; // …
Pic.60
Создание меню при помощи VS
Pic.61
Свойства объекта StatusBar
Pic.62
Свойства объекта StatusBarPanel
Pic.63
Свойства объекта StatusBarPanel
Pic.64
Создаем строку состояния public class MainForm : Form { // Создаем объекты для всей строки состояния и ее // отдельных панелей private StatusBar statusBar = new StatusBar(); private StatusBarPanel …
Pic.65
Создаем строку состояния private void BuildStatBar() { // Настраиваем строку состояния statusBar. ShowPanels = true; statusBar. Size = new System. Drawing. Size(212, 20); statusBar. Location = new …
Pic.66
Создаем строку состояния // Добавляем значок try { // Этот значок обязательно должен находиться в каталоге приложения. Icon i = new Icon("status. ico"); sbPnlPrompt. Icon = i; } …
Pic.68
Работа с таймером public class MainForm : Form { . . . private Timer timer1 = new Timer(); public MainForm() { // Настраиваем объект Timer timer1. Interval = 1000; timer1. Enabled = true; timer1. …
Pic.69
Отображение в строке состояния подсказок к пунктам меню public class MainForm : Form { . . . public MainForm() { . . . // Событие MenuComplete происходит при выходе пользователем из меню. // Мы будем …
Pic.70
Отображение в строке состояния подсказок к пунктам меню // Вспомогательные функции private void BuildMenuSystem() { // Создаем главное меню mainMenu = new MainMenu(); // Создаем меню File MenuItem …
Pic.71
Панель инструментов Класс ToolBar Класс ToolBarButton Поместить кнопки в ToolBarButtonCollection объекта ToolBar
Pic.72
Свойства класса ToolBar
Pic.73
Свойства класса ToolBarButton
Pic.74
Простейшая (без изображений) панель public class MainForm : Form { // Создаем панель инструментов и две кнопки private ToolBarButton tbSaveButton = new ToolBarButton(); private ToolBarButton …
Pic.75
Простейшая (без изображений) панель private void BuildToolBar() { // Настраиваем каждую кнопку tbSaveButton. Text = "Save"; tbSaveButton. ToolTipText = "Save"; tbExitButton. Text …
Pic.76
Добавление изображений public class MainForm : Form { // Объект для хранения набора изображений private ImageList toolBarIcons = new ImageList(); . . . private void BuildToolBar() { // Настраиваем …
Pic.77
Создание панели инструментов в VS
Pic.78
Пример работы с системным реестром // Предположим, что у нас установлены следующие значения переменных: // Color currColor = Color. MistyRose; // private int currFontSize = TheFontSize. Normal; …
Pic.79
Пример работы с системным реестром public MainForm() { // Открываем параметр реестра RegistryKey regKey = Registry. CurrentUser; regKey = regKey. …
Pic.80
Запись в журнал событий // Срабатывает при активизации пользователем пункта меню File4Exit private void FileExit_Clicked(object sender, EventArgs e) { // Мы делаем записи в журнал событий приложений …
Pic.81
Чтение журнала событий private void FileExit_Clicked(object sender, EventArgs e) { . . . // Отображаем первые пять записей журнала событий приложений for(int i = 0; i < 5; i++) { try { MessageBox. …
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!