🗊Презентация Построение оконных приложений

Нажмите для полного просмотра!
Построение оконных приложений, слайд №1Построение оконных приложений, слайд №2Построение оконных приложений, слайд №3Построение оконных приложений, слайд №4Построение оконных приложений, слайд №5Построение оконных приложений, слайд №6Построение оконных приложений, слайд №7Построение оконных приложений, слайд №8Построение оконных приложений, слайд №9Построение оконных приложений, слайд №10Построение оконных приложений, слайд №11Построение оконных приложений, слайд №12Построение оконных приложений, слайд №13Построение оконных приложений, слайд №14Построение оконных приложений, слайд №15Построение оконных приложений, слайд №16Построение оконных приложений, слайд №17Построение оконных приложений, слайд №18Построение оконных приложений, слайд №19Построение оконных приложений, слайд №20Построение оконных приложений, слайд №21Построение оконных приложений, слайд №22Построение оконных приложений, слайд №23Построение оконных приложений, слайд №24Построение оконных приложений, слайд №25Построение оконных приложений, слайд №26Построение оконных приложений, слайд №27Построение оконных приложений, слайд №28Построение оконных приложений, слайд №29Построение оконных приложений, слайд №30Построение оконных приложений, слайд №31Построение оконных приложений, слайд №32Построение оконных приложений, слайд №33Построение оконных приложений, слайд №34Построение оконных приложений, слайд №35Построение оконных приложений, слайд №36Построение оконных приложений, слайд №37Построение оконных приложений, слайд №38Построение оконных приложений, слайд №39Построение оконных приложений, слайд №40Построение оконных приложений, слайд №41Построение оконных приложений, слайд №42Построение оконных приложений, слайд №43Построение оконных приложений, слайд №44Построение оконных приложений, слайд №45Построение оконных приложений, слайд №46Построение оконных приложений, слайд №47Построение оконных приложений, слайд №48Построение оконных приложений, слайд №49Построение оконных приложений, слайд №50Построение оконных приложений, слайд №51Построение оконных приложений, слайд №52Построение оконных приложений, слайд №53Построение оконных приложений, слайд №54Построение оконных приложений, слайд №55Построение оконных приложений, слайд №56Построение оконных приложений, слайд №57Построение оконных приложений, слайд №58Построение оконных приложений, слайд №59Построение оконных приложений, слайд №60Построение оконных приложений, слайд №61Построение оконных приложений, слайд №62Построение оконных приложений, слайд №63Построение оконных приложений, слайд №64Построение оконных приложений, слайд №65Построение оконных приложений, слайд №66Построение оконных приложений, слайд №67Построение оконных приложений, слайд №68Построение оконных приложений, слайд №69Построение оконных приложений, слайд №70Построение оконных приложений, слайд №71Построение оконных приложений, слайд №72Построение оконных приложений, слайд №73Построение оконных приложений, слайд №74Построение оконных приложений, слайд №75Построение оконных приложений, слайд №76Построение оконных приложений, слайд №77Построение оконных приложений, слайд №78Построение оконных приложений, слайд №79Построение оконных приложений, слайд №80Построение оконных приложений, слайд №81

Содержание

Вы можете ознакомиться и скачать презентацию на тему Построение оконных приложений. Доклад-сообщение содержит 81 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Язык С#
Построение оконных приложений

Лекция #7
Описание слайда:
Язык С# Построение оконных приложений Лекция #7

Слайд 2





Способы создания приложения Windows
Вручную и откомпилировать csc.exe
WinDes.exe из .NET SDK
Visual Studio.NET
Описание слайда:
Способы создания приложения Windows Вручную и откомпилировать csc.exe WinDes.exe из .NET SDK Visual Studio.NET

Слайд 3





Обзор пространства имен Windows.Forms
Описание слайда:
Обзор пространства имен Windows.Forms

Слайд 4





Создание главного окна приложения
namespace MyRawWindow
{
using System;
using System.Windows.Forms;

public class MainWindow : Form
{
		public MainWindow(){}
		// Запускаем приложение
		public static int Main (string[] args)
		{
			Application.Run(new MainWindow());
			return 0;
		}
}
}
Описание слайда:
Создание главного окна приложения namespace MyRawWindow { using System; using System.Windows.Forms; public class MainWindow : Form { public MainWindow(){} // Запускаем приложение public static int Main (string[] args) { Application.Run(new MainWindow()); return 0; } } }

Слайд 5





Визуальная разработка
Описание слайда:
Визуальная разработка

Слайд 6





Фрагмент кода
public class Form1 : System.Windows.Forms.Form
	{
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			InitializeComponent();
			// TODO here
		}

		protected override void Dispose( bool disposing )
		{  // Если удалять что-то, то здесь
			if( disposing )
			{	if (components != null) 	{ components.Dispose(); }
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		private void InitializeComponent()
		{	this.components = new System.ComponentModel.Container();
			this.Size = new System.Drawing.Size(300,300);
			this.Text = "Form1";
		}
		#endregion

		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}
	}
Описание слайда:
Фрагмент кода public class Form1 : System.Windows.Forms.Form { private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); // TODO here } protected override void Dispose( bool disposing ) { // Если удалять что-то, то здесь if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } #endregion [STAThread] static void Main() { Application.Run(new Form1()); } }

Слайд 7





Методы объекта Application
Описание слайда:
Методы объекта Application

Слайд 8





Свойства объекта Application
Описание слайда:
Свойства объекта Application

Слайд 9





События объекта Application
Описание слайда:
События объекта Application

Слайд 10





Добавление атрибутов в файл AssemblyInfo.cs
// Атрибуты для нашей сборки
[assembly:AssemblyCompany("Intertech, Inc.")]
[assembly:AssemblyProduct("A Better Window")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
Описание слайда:
Добавление атрибутов в файл AssemblyInfo.cs // Атрибуты для нашей сборки [assembly:AssemblyCompany("Intertech, Inc.")] [assembly:AssemblyProduct("A Better Window")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]

Слайд 11





Работа с классом Application
namespace AppClassExample
{
using System;
using System.Windows.Forms;
using System.Reflection;
public class MainForm : Form
{
	...
	public MainForm()
	{
		GetStats();
	}
	private void GetStats()
	{
		MessageBox.Show(Application.CompanyName, "Company:");
		MessageBox.Show(Application.ProductName, "App Name:");
		MessageBox.Show(Application.StartupPath, "I live here:");
	}
}
}
Описание слайда:
Работа с классом Application namespace AppClassExample { using System; using System.Windows.Forms; using System.Reflection; public class MainForm : Form { ... public MainForm() { GetStats(); } private void GetStats() { MessageBox.Show(Application.CompanyName, "Company:"); MessageBox.Show(Application.ProductName, "App Name:"); MessageBox.Show(Application.StartupPath, "I live here:"); } } }

Слайд 12





Реагируем на событие ApplicationExit
public class MainForm : Form
{
  ...
  public MainForm()
  {
	...
  	// Перехватываем событие ApplicationExit
	Application.ApplicationExit += new EventHandler(Form_OnExit);
  }
   // Метод, запускаемый обработчиком событий
   private void Form_OnExit(object sender, EventArgs evArgs)
   {
	MessageBox.Show("See ya!", "This app is dead...");
   }
}
Описание слайда:
Реагируем на событие ApplicationExit public class MainForm : Form { ... public MainForm() { ... // Перехватываем событие ApplicationExit Application.ApplicationExit += new EventHandler(Form_OnExit); } // Метод, запускаемый обработчиком событий private void Form_OnExit(object sender, EventArgs evArgs) { MessageBox.Show("See ya!", "This app is dead..."); } }

Слайд 13





Препроцессинг сообщений
// Мы должны указать это пространство имен!
using Microsoft.Win32;		
// Создаем класс — фильтр сообщений
public class MyMessageFilter : IMessageFilter
{
  public bool PreFilterMessage(ref Message m)
  {
	// Перехватываем нажатие правой кнопки мыши
	if (m.Msg = = 513)		// WM_LBUTTONDOWN = 513
	{
		MessageBox.Show("WM_LBUTTONDOWN is: " + m.Msg);
		return true;
	}
	return false;	// Все остальные сообщения игнорируются 
  }
}
Описание слайда:
Препроцессинг сообщений // Мы должны указать это пространство имен! using Microsoft.Win32; // Создаем класс — фильтр сообщений public class MyMessageFilter : IMessageFilter { public bool PreFilterMessage(ref Message m) { // Перехватываем нажатие правой кнопки мыши if (m.Msg = = 513) // WM_LBUTTONDOWN = 513 { MessageBox.Show("WM_LBUTTONDOWN is: " + m.Msg); return true; } return false; // Все остальные сообщения игнорируются } }

Слайд 14





Добавление фильтра 
public class MainForm : Form
{
	private MyMessageFilter msgFilter = new MyMessageFilter();
	...
	public MainForm()
	{
		...
		// Добавляем (регистрируем) фильтр сообщений
		Application.AddMessageFilter(msgFilter);
	}
	// Обработчик событий
	private void Form_OnExit(object sender, EventArgs evArgs)
	{
		MessageBox.Show("See ya!", "This app is dead...");
		// Удаляем фильтр сообщений
		Application.RemoveMessageFilter(msgFilter);
	}
}
Описание слайда:
Добавление фильтра public class MainForm : Form { private MyMessageFilter msgFilter = new MyMessageFilter(); ... public MainForm() { ... // Добавляем (регистрируем) фильтр сообщений Application.AddMessageFilter(msgFilter); } // Обработчик событий private void Form_OnExit(object sender, EventArgs evArgs) { MessageBox.Show("See ya!", "This app is dead..."); // Удаляем фильтр сообщений Application.RemoveMessageFilter(msgFilter); } }

Слайд 15





Анатомия формы
Структура оконного приложения
Описание слайда:
Анатомия формы Структура оконного приложения

Слайд 16





Цепочка наследования класса Form
Описание слайда:
Цепочка наследования класса Form

Слайд 17





Класс Component
реализация интерфейса IComponent
public interface IComponent: IDisposable
{
  // Свойство Site
  public ISite Site { virtual get; vitural site;}
  // Событие Disposed
  public event EventHandler Disposed;
 
}
Описание слайда:
Класс Component реализация интерфейса IComponent public interface IComponent: IDisposable { // Свойство Site public ISite Site { virtual get; vitural site;} // Событие Disposed public event EventHandler Disposed; }

Слайд 18





Класс Component
реализация интерфейса ISite, который позволяет элементу управления взаимодействовать с контейнером, в котором он расположен
public interface ISite: IServiceProvider
{
  // Свойства интерфейса ISite
 public IComponent Component { virtual get; }
 public IContainer Container { virtual get; }
 public bool DesignMode { virtual get; }
 public string Name { virtual get; virtual set; }
}
Описание слайда:
Класс Component реализация интерфейса ISite, который позволяет элементу управления взаимодействовать с контейнером, в котором он расположен public interface ISite: IServiceProvider { // Свойства интерфейса ISite public IComponent Component { virtual get; } public IContainer Container { virtual get; } public bool DesignMode { virtual get; } public string Name { virtual get; virtual set; } }

Слайд 19





Переопределение метода Dispose
public override void Dispose()
{
   base.Dispose();
   
   // Здесь выполняем необходимые действия
}
Описание слайда:
Переопределение метода Dispose public override void Dispose() { base.Dispose(); // Здесь выполняем необходимые действия }

Слайд 20





Класс Control
Класс Control определяет общие черты всех типов, относящихся к элементам графического интерфейса
Описание слайда:
Класс Control Класс Control определяет общие черты всех типов, относящихся к элементам графического интерфейса

Слайд 21





Важные свойства объекта Control
Описание слайда:
Важные свойства объекта Control

Слайд 22





Важные методы объекта Control
Описание слайда:
Важные методы объекта Control

Слайд 23





Важные методы объекта Control
Описание слайда:
Важные методы объекта Control

Слайд 24





Настройка стиля формы
public enum ControlStyles
{
		AllPaintingToWmPaint,
		CacheText,
		ContainerControl,
		EnableNotifyMessage,
		FixedHeight,
		FixedWidth,
		Opaque,
		ResizeRedraw,
		Selectable,
		StandardClick,
		StandardDoubleClick,
		SupportsTransparentBackColor,
		UserMouse,
		UserPaint
}
Описание слайда:
Настройка стиля формы public enum ControlStyles { AllPaintingToWmPaint, CacheText, ContainerControl, EnableNotifyMessage, FixedHeight, FixedWidth, Opaque, ResizeRedraw, Selectable, StandardClick, StandardDoubleClick, SupportsTransparentBackColor, UserMouse, UserPaint }

Слайд 25





Настройка стиля формы
public enum ControlStyles
{
		AllPaintingToWmPaint,
		CacheText,
		ContainerControl,
		EnableNotifyMessage,
		FixedHeight,
		FixedWidth,
		Opaque,
		ResizeRedraw,
		Selectable,
		StandardClick,
		StandardDoubleClick,
		SupportsTransparentBackColor,
		UserMouse,
		UserPaint
}
Описание слайда:
Настройка стиля формы public enum ControlStyles { AllPaintingToWmPaint, CacheText, ContainerControl, EnableNotifyMessage, FixedHeight, FixedWidth, Opaque, ResizeRedraw, Selectable, StandardClick, StandardDoubleClick, SupportsTransparentBackColor, UserMouse, UserPaint }

Слайд 26





Важные события класс Control
Описание слайда:
Важные события класс Control

Слайд 27





Работаем с классом Control
// Необходимо для использования типа Rectangle
using System.Drawing;
...
public class MainForm : Form
{
	public static int Main(string[] args)
	{
		Application.Run(new MainForm());
		return 0;
	}
	public MainForm()
	{
		Top = 100;
		Left = 75;
		Height = 100;
		Width = 500;
		MessageBox.Show(Bounds.ToString(), "Current rect");
	}
}
Описание слайда:
Работаем с классом Control // Необходимо для использования типа Rectangle using System.Drawing; ... public class MainForm : Form { public static int Main(string[] args) { Application.Run(new MainForm()); return 0; } public MainForm() { Top = 100; Left = 75; Height = 100; Width = 500; MessageBox.Show(Bounds.ToString(), "Current rect"); } }

Слайд 28





Завершение работы приложения
protected override void Dispose( bool disposing )
{
		if( disposing )
		{
			if (components != null) 
				components.Dispose();
		}
	base.Dispose( disposing );
	MessageBox.Show("Disposing this Form");
}
Описание слайда:
Завершение работы приложения protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) components.Dispose(); } base.Dispose( disposing ); MessageBox.Show("Disposing this Form"); }

Слайд 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; Width = 500;
		MessageBox.Show(Bounds.ToString(), "Current rect");
		// Перехватываем событие MouseUp
		this.MouseUp += new MouseEventHandler(OnMouseUp);
	}
	// Метод, вызываемый при возникновении события MouseUp 
	public void OnMouseUp(object sender, MouseEventArgs e)
	{
		this.Text = "Clicked at: (" + e.X + ", " + e.Y +")";
	}
...
}
Описание слайда:
Перехват событий от мыши public class MainForm : Form { public static int Main(string[] args) { Application.Run(new MainForm()); return 0; } public MainForm() { Top = 100; Left = 75; Height = 100; Width = 500; MessageBox.Show(Bounds.ToString(), "Current rect"); // Перехватываем событие MouseUp this.MouseUp += new MouseEventHandler(OnMouseUp); } // Метод, вызываемый при возникновении события MouseUp public void OnMouseUp(object sender, MouseEventArgs e) { this.Text = "Clicked at: (" + e.X + ", " + e.Y +")"; } ... }

Слайд 30





Перехват событий от мыши
public class MainForm : Form
{
...
	public MainForm()
	{
		...
		// Отслеживаем движения мыши (вместе с событием MouseUp 
		this.MouseUp += new MouseEventHandler(OnMouseUp);
		this.MouseMove += new MouseEventHandler(OnMouseMove);
	}
	public void OnMouseUp(object sender, MouseEventArgs e)
	{
		if(e.Button = = MouseButtons.Left)
			MessageBox.Show("Left click!");
		if(e.Button = = MouseButtons.Right)
			MessageBox.Show("Right click!");
		if(e.Button = = MouseButtons.Middle)
			MessageBox.Show("Middle click!");
	}
	public void OnMouseMove(object sender, MouseEventArgs e)
	{
		this.Text = "Current Pos: (" + e.X + ", " + e.Y + ")";
	}
...
}
Описание слайда:
Перехват событий от мыши public class MainForm : Form { ... public MainForm() { ... // Отслеживаем движения мыши (вместе с событием MouseUp this.MouseUp += new MouseEventHandler(OnMouseUp); this.MouseMove += new MouseEventHandler(OnMouseMove); } public void OnMouseUp(object sender, MouseEventArgs e) { if(e.Button = = MouseButtons.Left) MessageBox.Show("Left click!"); if(e.Button = = MouseButtons.Right) MessageBox.Show("Right click!"); if(e.Button = = MouseButtons.Middle) MessageBox.Show("Middle click!"); } public void OnMouseMove(object sender, MouseEventArgs e) { this.Text = "Current Pos: (" + e.X + ", " + e.Y + ")"; } ... }

Слайд 31





2-й вариант
public class MainForm : Form
{
		public MainForm()
		{
		// Сейчас обработчики событий нам уже нужны
		// this.MouseUp += new MouseEventHandler(OnMouseUp);
		// this.MouseUp += new MouseEventHandler(OnMouseMove);
		}
     protected override void OnMouseUp( //object sender, 
					MouseEventArgs e)
     {
		// Какая кнопка мыши нажата?
       if(e.Button == MouseButtons.Left) 	MessageBox.Show("Left click!");
       if(e.Button == MouseButtons.Right) MessageBox.Show("Right click!");
       if(e.Button == MouseButtons.Middle) MessageBox.Show("Middle click!");
      }
	protected override void OnMouseMove(//object sender, 
						MouseEventArgs e)
	{
		this.Text = "Current Pos: (" + e.X + ", " + e.Y + ")";
	}
...
}
Описание слайда:
2-й вариант public class MainForm : Form { public MainForm() { // Сейчас обработчики событий нам уже нужны // this.MouseUp += new MouseEventHandler(OnMouseUp); // this.MouseUp += new MouseEventHandler(OnMouseMove); } protected override void OnMouseUp( //object sender, MouseEventArgs e) { // Какая кнопка мыши нажата? if(e.Button == MouseButtons.Left) MessageBox.Show("Left click!"); if(e.Button == MouseButtons.Right) MessageBox.Show("Right click!"); if(e.Button == MouseButtons.Middle) MessageBox.Show("Middle click!"); } protected override void OnMouseMove(//object sender, MouseEventArgs e) { this.Text = "Current Pos: (" + e.X + ", " + e.Y + ")"; } ... }

Слайд 32





Реагируем на события клавиатуры
public class MainForm : form
{
...
	public MainForm()
	{
		Top = 100;		Left = 75;
		Height = 100;		Width = 500;
		MessageBox.Show(Bounds.ToString(), "Current rect");
		...
		// Перехватываем событие KeyUp
		this.KeyUp += new KeyEventHandler(OnKeyUp);
	}
	public void OnKeyUp(object sender, KeyEventArgs e)
	{
		MessageBox.Show(e.KeyCode.ToString(), "KeyPressed!");
	}
...
}
Описание слайда:
Реагируем на события клавиатуры public class MainForm : form { ... public MainForm() { Top = 100; Left = 75; Height = 100; Width = 500; MessageBox.Show(Bounds.ToString(), "Current rect"); ... // Перехватываем событие KeyUp this.KeyUp += new KeyEventHandler(OnKeyUp); } public void OnKeyUp(object sender, KeyEventArgs e) { MessageBox.Show(e.KeyCode.ToString(), "KeyPressed!"); } ... }

Слайд 33





Свойства класса KeyEventArgs
Описание слайда:
Свойства класса KeyEventArgs

Слайд 34





Дополнительные свойства класса Control
Описание слайда:
Дополнительные свойства класса Control

Слайд 35





Дополнительные методы класса Control
Описание слайда:
Дополнительные методы класса Control

Слайд 36





Дополнительные события класса Control
Описание слайда:
Дополнительные события класса Control

Слайд 37





Возможности класса Control
using System;
using System.Windows.Forms;
using System.Drawing;	// Для типов Color, Brush и Font
public class MainForm : Form
{	...
	public MainForm()
	{
	// Устанавливаем значения некоторых свойств
	BackColor = Color.Tomato;
	Opacity = 0.5d;
	Cursor = Cursors.WaitCursor;

	// Перехватываем событие Paint
	this.Paint += new PaintEventHandler(Form1_Paint);
	}
	private void Form1_Paint(object sender, PaintEventArgs e)
	{
		Graphics g = e.Graphics;
		g.DrawString("What a head trip...", 
			new Font("Times New Roman", 20),
			new SolidBrush(Color.Black), 40, 10);
	}
}
Описание слайда:
Возможности класса Control using System; using System.Windows.Forms; using System.Drawing; // Для типов Color, Brush и Font public class MainForm : Form { ... public MainForm() { // Устанавливаем значения некоторых свойств BackColor = Color.Tomato; Opacity = 0.5d; Cursor = Cursors.WaitCursor; // Перехватываем событие Paint this.Paint += new PaintEventHandler(Form1_Paint); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("What a head trip...", new Font("Times New Roman", 20), new SolidBrush(Color.Black), 40, 10); } }

Слайд 38





Событие Paint
и PaintEventArgs
ClipRectangle – прямоугольная область вывода изображения
Graphics – контекст вывода изображения
Описание слайда:
Событие Paint и PaintEventArgs ClipRectangle – прямоугольная область вывода изображения Graphics – контекст вывода изображения

Слайд 39





Класс ScrollableControl
// Этот код помещается в конструктор класса 
// InitializeComponent() 
// Для работы с классом Size также нужна ссылка
// на пространство имен System.Drawing
this.AutoScroll = true;
this.AutoScrollMiSize=new System.Drawing.Size(300,300);
Описание слайда:
Класс ScrollableControl // Этот код помещается в конструктор класса // InitializeComponent() // Для работы с классом Size также нужна ссылка // на пространство имен System.Drawing this.AutoScroll = true; this.AutoScrollMiSize=new System.Drawing.Size(300,300);

Слайд 40





Класс ContainerControl
Описание слайда:
Класс ContainerControl

Слайд 41





Некоторые свойства класса Form (2)
Описание слайда:
Некоторые свойства класса Form (2)

Слайд 42





Некоторые свойства класса Form
Описание слайда:
Некоторые свойства класса Form

Слайд 43





Некоторые методы класса Form
Описание слайда:
Некоторые методы класса Form

Слайд 44





Некоторые события класса Form
Описание слайда:
Некоторые события класса Form

Слайд 45





Иллюстрация возможностей класса Form
public class MainForm: Form

{
		...
  public MainForm()
  {
	// Настраиваем исходный облик нашей формы
	BackColor = Color.LemonChiffon;		// Цвет фона:
	Text = "My Fantastic Form";		// Заголовок формы:
	Size = new Size(200, 200);		// Размер 200*200:
	CenterToScreen();			// Помещаем форму в центр экрана:
	// Перехватываем события
	this.Resize += new EventHandler(this.MainForm_Resize);
	this.Paint += new PaintEventHandler(this.MainForm_Paint);
  }
 
  private void MainForm_Resize(object sender, System.EventArgs e)  
  {
   // При изменении размера формы ее изображение нужно обновить! Можно также 
   // вместо вызова Invalidate просто установить поддержку стиля ResizeRedraw 
   Invalidate();
}

  // Выводим текстовую строку. 
  private void MainForm_paint(object sender, PaintEventArgs e)
  {
	Graphics g = e.Graphics;
	g.DrawString("Windows Forms is for building GUIs!",
	new Font("Times New Roman", 20), new SolidBrush(Color.Black),
	this.DisplayRectangle);	// Выводим в клиентской прямоугольной  области 
  }
}
Описание слайда:
Иллюстрация возможностей класса Form public class MainForm: Form { ... public MainForm() { // Настраиваем исходный облик нашей формы BackColor = Color.LemonChiffon; // Цвет фона: Text = "My Fantastic Form"; // Заголовок формы: Size = new Size(200, 200); // Размер 200*200: CenterToScreen(); // Помещаем форму в центр экрана: // Перехватываем события this.Resize += new EventHandler(this.MainForm_Resize); this.Paint += new PaintEventHandler(this.MainForm_Paint); } private void MainForm_Resize(object sender, System.EventArgs e) { // При изменении размера формы ее изображение нужно обновить! Можно также // вместо вызова Invalidate просто установить поддержку стиля ResizeRedraw Invalidate(); } // Выводим текстовую строку. private void MainForm_paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("Windows Forms is for building GUIs!", new Font("Times New Roman", 20), new SolidBrush(Color.Black), this.DisplayRectangle); // Выводим в клиентской прямоугольной области } }

Слайд 46





Меню
Описание слайда:
Меню

Слайд 47





Члены класса Menu
Описание слайда:
Члены класса Menu

Слайд 48





Члены вложенного класса Menu$MenuItemCollection
Описание слайда:
Члены вложенного класса Menu$MenuItemCollection

Слайд 49





Создание меню программным способом
public class MainForm: Form
{
   private MainMenu mainMenu; // Главное меню для Form
		
   public MainForm()
   {
     mainMenu = new MainMenu(); 	// Создаем главное меню
     // Создаем меню File и добавляем его в MenuItemCollection 
     MenuItem miFile = mainMenu.MenuItems.Add("&File");

     // Теперь создаем подменю Exit и добавляем его в меню File. Этот вариант Add() 
     // принимает: (1) создаваемый объект MenuItem; (2) создаваемый делегат
     // (EventHandler); (3) необязательную клавиатурную комбинацию  быстрого доступа 
    
    miFileMenuItems.Add(new MenuItem("E&xit", 	
        new EventHandler(this.FileExit_Clicked),Shortcut.CtrlX));

    // Присоединяем главное меню к объекту Form
    this.Menu = mainMenu;
    }
 ...
}
Описание слайда:
Создание меню программным способом public class MainForm: Form { private MainMenu mainMenu; // Главное меню для Form public MainForm() { mainMenu = new MainMenu(); // Создаем главное меню // Создаем меню File и добавляем его в MenuItemCollection MenuItem miFile = mainMenu.MenuItems.Add("&File"); // Теперь создаем подменю Exit и добавляем его в меню File. Этот вариант Add() // принимает: (1) создаваемый объект MenuItem; (2) создаваемый делегат // (EventHandler); (3) необязательную клавиатурную комбинацию быстрого доступа miFileMenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked),Shortcut.CtrlX)); // Присоединяем главное меню к объекту Form this.Menu = mainMenu; } ... }

Слайд 50





public class MainForm : Form // Простое приложение с главным меню
public class MainForm : Form // Простое приложение с главным меню
{
  // Главное меню для формы
  private MainMenu mainMenu;
		
  // Запускаем приложение
  [STAThread]
  public static int Main(string[] args)  { Application.Run(new MainForm());  }

  // Создаем форму
  public MainForm()
  {
	// Настраиваем исходный облик и местонахождение формы 
	Text = "Simple Menu";	CenterToScreen();

	mainMenu = new MainMenu(); // Создаем объект главного меню
	// Создаем меню File | Exit
	MenuItem miFile = mainMenu.MenuItems.Add("&File");
	miFile.MenuItems.Add(new MenuItem("E&xit", 
		new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));

	this.Menu = mainMenu; // Присоединяем главное меню к объекту Form
	// MainMenu.GetForm() возвращает ссылку на форму, на которой расположено 
	// меню. Поэтому мы можем сделать такой маленький фокус: 
	mainMenu.GetForm().BackColor = Color.Black;
  }
  // И не забыть про обработчик событий для File-Exit
  private void FileExit_Clicked(object sender, EventArgs e)
  {
	this.Close();		// Выход из приложения
  }
}
Описание слайда:
public class MainForm : Form // Простое приложение с главным меню public class MainForm : Form // Простое приложение с главным меню { // Главное меню для формы private MainMenu mainMenu; // Запускаем приложение [STAThread] public static int Main(string[] args) { Application.Run(new MainForm()); } // Создаем форму public MainForm() { // Настраиваем исходный облик и местонахождение формы Text = "Simple Menu"; CenterToScreen(); mainMenu = new MainMenu(); // Создаем объект главного меню // Создаем меню File | Exit MenuItem miFile = mainMenu.MenuItems.Add("&File"); miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX)); this.Menu = mainMenu; // Присоединяем главное меню к объекту Form // MainMenu.GetForm() возвращает ссылку на форму, на которой расположено // меню. Поэтому мы можем сделать такой маленький фокус: mainMenu.GetForm().BackColor = Color.Black; } // И не забыть про обработчик событий для File-Exit private void FileExit_Clicked(object sender, EventArgs e) { this.Close(); // Выход из приложения } }

Слайд 51





Добавляем еще одно меню верхнего уровня
public class MainForm : Form
{
  private MainMenu mainMenu;
  ...
  public MainForm()
  {
    // Создаем меню File - Exit
    MenuItem miFile = mainMenu.MenuItems.Add("&File");
    miFile.MenuItems.Add(new MenuItem("E&xit", 
		new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
    // А теперь — еще и меню Help - About
    MenuItem miHelp = mainMenu.MenuItems.Add("Help");
	miHelp.MenuItems.Add(new MenuItem("&About", 
	new EventHandler(this.HelpAbout_Clicked), Shortcut.CtrlA));
			...
  }
   // И обработчик события для Help - About		
   private void HelpAbout_Clicked(object sender, EventArgs e)
   {
	MessageBox.Show("The amazing menu app...");
   }
}
Описание слайда:
Добавляем еще одно меню верхнего уровня public class MainForm : Form { private MainMenu mainMenu; ... public MainForm() { // Создаем меню File - Exit MenuItem miFile = mainMenu.MenuItems.Add("&File"); miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX)); // А теперь — еще и меню Help - About MenuItem miHelp = mainMenu.MenuItems.Add("Help"); miHelp.MenuItems.Add(new MenuItem("&About", new EventHandler(this.HelpAbout_Clicked), Shortcut.CtrlA)); ... } // И обработчик события для Help - About private void HelpAbout_Clicked(object sender, EventArgs e) { MessageBox.Show("The amazing menu app..."); } }

Слайд 52





Создаем контекстное меню I
namespace MainForm
{
	// Вспомогательная структура для установки размера шрифта 
	internal struct TheFontSize
	{
		public static int Huge = 30;
		public static int Normal = 20;
		public static int Tiny = 8;
	}
	public class MainForm : Form
	{
		// Исходный размер шрифта
		private int currFontSize = TheFontSize.Normal;
		// Контекстное меню формы
		private ContextMenu popUpMenu;
		public static void Main(string[] args)
		{
			Application.Run(new MainForm());
		}
		private void MainForm_Resize(object sender, System.EventArgs e)
		{
			Invalidate();
		}
Описание слайда:
Создаем контекстное меню I namespace MainForm { // Вспомогательная структура для установки размера шрифта internal struct TheFontSize { public static int Huge = 30; public static int Normal = 20; public static int Tiny = 8; } public class MainForm : Form { // Исходный размер шрифта private int currFontSize = TheFontSize.Normal; // Контекстное меню формы private ContextMenu popUpMenu; public static void Main(string[] args) { Application.Run(new MainForm()); } private void MainForm_Resize(object sender, System.EventArgs e) { Invalidate(); }

Слайд 53





Создаем контекстное меню II
public MainForm()
{
	// Прежде всего создаем контекстное меню
	popUpMenu = new ContextMenu();

	// Теперь добавляем в контекстное меню элементы
	popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked));
	popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked));
	popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked));

	// Теперь подключаем контекстное меню к форме
	this.ContextMenu = popUpMenu;
				
	// Ставим обработчики событий
	this.Resize += new System.EventHandler(this.MainForm_Resize);
	this.Paint += new PaintEventHandler(this.MainForm_Paint);
}
Описание слайда:
Создаем контекстное меню II public MainForm() { // Прежде всего создаем контекстное меню popUpMenu = new ContextMenu(); // Теперь добавляем в контекстное меню элементы popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked)); // Теперь подключаем контекстное меню к форме this.ContextMenu = popUpMenu; // Ставим обработчики событий this.Resize += new System.EventHandler(this.MainForm_Resize); this.Paint += new PaintEventHandler(this.MainForm_Paint); }

Слайд 54





Создаем контекстное меню III
// Обработчик для PopUp_Clicked (всех трех пунктов)
private void PopUp_Clicked(object sender, EventArgs e)
{
// Ориентируемся на строковое имя выбранного пользователем элемента  меню 
	MenuItem miClicked = (MenuItem)sender;
	string item = miClicked.Text;
	if(item = = "Huge")	currFontSize = TheFontSize.Huge;
	if(item = = "Normal")	currFontSize = TheFontSize.Normal;
	if(item = = "Tiny")	currFontSize = TheFontSize.Tiny;
	Invalidate();
}
private void MainForm_Paint(object sender, PaintEventArgs e)
{
	Graphics g = e.Graphics;
	g.DrawString("Please click on me...",
	new Font("Times New Roman", (float)currFontSize),
		new SolidBrush(Color.Black),
		this.DisplayRectangle);
}
}
}
Описание слайда:
Создаем контекстное меню III // Обработчик для PopUp_Clicked (всех трех пунктов) private void PopUp_Clicked(object sender, EventArgs e) { // Ориентируемся на строковое имя выбранного пользователем элемента меню MenuItem miClicked = (MenuItem)sender; string item = miClicked.Text; if(item = = "Huge") currFontSize = TheFontSize.Huge; if(item = = "Normal") currFontSize = TheFontSize.Normal; if(item = = "Tiny") currFontSize = TheFontSize.Tiny; Invalidate(); } private void MainForm_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("Please click on me...", new Font("Times New Roman", (float)currFontSize), new SolidBrush(Color.Black), this.DisplayRectangle); } } }

Слайд 55





Дополнительные возможности меню
Описание слайда:
Дополнительные возможности меню

Слайд 56





Дополнительные возможности меню
Описание слайда:
Дополнительные возможности меню

Слайд 57





Установка флажка в контекстном меню I
public class MainForm : Form
{
	// Текущий размер шрифта
	private int currFontSize = TheFontSize.Normal;

	// Контекстное меню для формы
	private ContextMenu popUpMenu;

	// Дополнительные ссылки для отслеживания пункта меню,
	// напротив которого надо установить флажок 
	private MenuItem currentCheckedItem;	
       // Представляет выбранный в настоящий  момент пункт меню 
		private MenuItem checkedHuge;
		private MenuItem checkedNormal;
		private MenuItem checkedTiny;
...
}
Описание слайда:
Установка флажка в контекстном меню I public class MainForm : Form { // Текущий размер шрифта private int currFontSize = TheFontSize.Normal; // Контекстное меню для формы private ContextMenu popUpMenu; // Дополнительные ссылки для отслеживания пункта меню, // напротив которого надо установить флажок private MenuItem currentCheckedItem; // Представляет выбранный в настоящий момент пункт меню private MenuItem checkedHuge; private MenuItem checkedNormal; private MenuItem checkedTiny; ... }

Слайд 58





Установка флажка в контекстном меню II
// Конструктор формы
public MainForm()
{
	// Настраиваем исходный облик формы
	Text = "PopUp Menu";  CenterToScreen();
	// Прежде всего создаем контекстное меню
	popUpMenu = new ContextMenu();
		
	// А теперь добавляем пункты меню
	popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked));
	popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked));
	popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked));
	this.ContextMenu = popUpMenu;
	// Теперь привязываем каждую из наших ссылок на MenuItem к элементам
	// контекстного  меню 
	checkedHuge = this.ContextMenu.MenuItems[0];
	checkedNormal = this.ContextMenu.MenuItems[1];
	checkedTiny = this.ContextMenu.MenuItems[2];

	// А теперь ставим флажок напротив Normal:
	currentCheckedItem = checkedNormal;
	currentCheckedItem.Checked = true;
}
Описание слайда:
Установка флажка в контекстном меню II // Конструктор формы public MainForm() { // Настраиваем исходный облик формы Text = "PopUp Menu"; CenterToScreen(); // Прежде всего создаем контекстное меню popUpMenu = new ContextMenu(); // А теперь добавляем пункты меню popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked)); this.ContextMenu = popUpMenu; // Теперь привязываем каждую из наших ссылок на MenuItem к элементам // контекстного меню checkedHuge = this.ContextMenu.MenuItems[0]; checkedNormal = this.ContextMenu.MenuItems[1]; checkedTiny = this.ContextMenu.MenuItems[2]; // А теперь ставим флажок напротив Normal: currentCheckedItem = checkedNormal; currentCheckedItem.Checked = true; }

Слайд 59





Установка флажка в контекстном меню III
private void PopUp_Clicked(object sender, EventArgs e)
{
// Снимаем флажок с выбранного в настоящий момент пункта 
currentCheckedItem.Checked = false;
		
// Определяем название выбранного пользователем пункта меню 
MenuItem miClicked = (MenuItem)sender;
string item = miClicked.Text;

// В ответ на выбор пользователя устанавливаем нужный размер шрифта и флажок  
// напротив пункта меню 
if(item = = "Huge")	{	currFontSize = TheFontSize.Huge;
				currentCheckedItem = checkedHuge;
			}
if(item = = "Normal")	{	currFontSize = TheFontSize.Normal;
				currentCheckedItem = checkedNormal;
			}
if(item = = "Tiny")	{	currFontSize = TheFontSize.Tiny;
				currentCheckedItem = checkedTiny;
		 	}

 // А теперь устанавливаем флажок
 currentCheckedItem.Checked = true;
 Invalidate();
}
Описание слайда:
Установка флажка в контекстном меню III private void PopUp_Clicked(object sender, EventArgs e) { // Снимаем флажок с выбранного в настоящий момент пункта currentCheckedItem.Checked = false; // Определяем название выбранного пользователем пункта меню MenuItem miClicked = (MenuItem)sender; string item = miClicked.Text; // В ответ на выбор пользователя устанавливаем нужный размер шрифта и флажок // напротив пункта меню if(item = = "Huge") { currFontSize = TheFontSize.Huge; currentCheckedItem = checkedHuge; } if(item = = "Normal") { currFontSize = TheFontSize.Normal; currentCheckedItem = checkedNormal; } if(item = = "Tiny") { currFontSize = TheFontSize.Tiny; currentCheckedItem = checkedTiny; } // А теперь устанавливаем флажок currentCheckedItem.Checked = true; Invalidate(); }

Слайд 60





Создание меню при помощи VS
Описание слайда:
Создание меню при помощи VS

Слайд 61





Свойства объекта StatusBar
Описание слайда:
Свойства объекта StatusBar

Слайд 62





Свойства объекта StatusBarPanel
Описание слайда:
Свойства объекта StatusBarPanel

Слайд 63





Свойства объекта StatusBarPanel
Описание слайда:
Свойства объекта StatusBarPanel

Слайд 64





Создаем строку состояния
public class MainForm : Form
{
	// Создаем объекты для всей строки состояния и ее 
   // отдельных панелей 
	private StatusBar statusBar = new StatusBar();
	private StatusBarPanel sbPnlPrompt = new StatusBarPanel();
	private StatusBarPanel sbPnlTime = new StatusBarPanel();

	public MainForm()
	{
		...
       // Метод, который создаст нам строку состояния 
		// и настроит ее нужным образом 
		BuildStatBar();					
   }
Описание слайда:
Создаем строку состояния public class MainForm : Form { // Создаем объекты для всей строки состояния и ее // отдельных панелей private StatusBar statusBar = new StatusBar(); private StatusBarPanel sbPnlPrompt = new StatusBarPanel(); private StatusBarPanel sbPnlTime = new StatusBarPanel(); public MainForm() { ... // Метод, который создаст нам строку состояния // и настроит ее нужным образом BuildStatBar(); }

Слайд 65





Создаем строку состояния
private void BuildStatBar()
	{
		// Настраиваем строку состояния
		statusBar.ShowPanels = true;
		statusBar.Size = new System.Drawing.Size(212, 20);
		statusBar.Location = new System.Drawing.Point(0, 216);

	// Панели добавляются в строку состояния при помощи метода AddRange() 
	statusBar.Panels.AddRange(new StatusBarPanel[] {sbPnlPrompt, sbPnlTime});

		// Настраиваем левую панель
		sbPnlPrompt.BorderStyle = StatusBarPanelBorderStyle.None;
		sbPnlPrompt.AutoSize = StatusBarPanelAutoSize.Spring;
		sbPnlPrompt.Width = 62;
		sbPnlPrompt.Text = "Ready";

		// Настраиваем правую панель
		sbPnlTime.Alignment = HorizontalAlignment.Right;
		sbPnlTime.Width = 76;
Описание слайда:
Создаем строку состояния private void BuildStatBar() { // Настраиваем строку состояния statusBar.ShowPanels = true; statusBar.Size = new System.Drawing.Size(212, 20); statusBar.Location = new System.Drawing.Point(0, 216); // Панели добавляются в строку состояния при помощи метода AddRange() statusBar.Panels.AddRange(new StatusBarPanel[] {sbPnlPrompt, sbPnlTime}); // Настраиваем левую панель sbPnlPrompt.BorderStyle = StatusBarPanelBorderStyle.None; sbPnlPrompt.AutoSize = StatusBarPanelAutoSize.Spring; sbPnlPrompt.Width = 62; sbPnlPrompt.Text = "Ready"; // Настраиваем правую панель sbPnlTime.Alignment = HorizontalAlignment.Right; sbPnlTime.Width = 76;

Слайд 66





Создаем строку состояния
	// Добавляем значок 
	try
	{
	// Этот значок обязательно должен находиться в каталоге приложения. 
		Icon i = new Icon("status.ico");
		sbPnlPrompt.Icon = i;
	}
	catch(Exception e)
	{
			MessageBox.Show(e.Message);
	}

	// Теперь добавляем панель управления в коллекцию Controls 
   // для формы 
			this.Controls.Add(statusBar);
 }
}
Описание слайда:
Создаем строку состояния // Добавляем значок try { // Этот значок обязательно должен находиться в каталоге приложения. Icon i = new Icon("status.ico"); sbPnlPrompt.Icon = i; } catch(Exception e) { MessageBox.Show(e.Message); } // Теперь добавляем панель управления в коллекцию Controls // для формы this.Controls.Add(statusBar); } }

Слайд 67





Члены класса Timer
Описание слайда:
Члены класса Timer

Слайд 68





Работа с таймером
public class MainForm : Form
{
...
		private Timer timer1 = new Timer();

		public MainForm()
		{
			// Настраиваем объект Timer
			timer1.Interval = 1000;
			timer1.Enabled = true;
			timer1.Tick += new EventHandler(timer1_Tick);
			...
		}
		
		// Этот метод будет вызываться примерно каждую секунду
		private void timer1_Tick(object sender, EventArgs e)
		{
			DateTime t = DateTime.Now;
			string s = t.ToLongTimeString();

			// Выводим полученное строковое значение на правую панель 
			sbPnlTime.Text = s;
		}
}
Описание слайда:
Работа с таймером public class MainForm : Form { ... private Timer timer1 = new Timer(); public MainForm() { // Настраиваем объект Timer timer1.Interval = 1000; timer1.Enabled = true; timer1.Tick += new EventHandler(timer1_Tick); ... } // Этот метод будет вызываться примерно каждую секунду private void timer1_Tick(object sender, EventArgs e) { DateTime t = DateTime.Now; string s = t.ToLongTimeString(); // Выводим полученное строковое значение на правую панель sbPnlTime.Text = s; } }

Слайд 69





Отображение в строке состояния подсказок к пунктам меню
public class MainForm : Form
{
		...
	public MainForm()
	{
			...
	// Событие MenuComplete происходит при выходе пользователем из меню. 
	// Мы будем реагировать на это событие, возвращая в левую панель строку 
	// по умолчанию "Ready". Если мы этого не сделаем, в строке состояния 
	// останется значение, которое изменилось при выборе пользователем пункта меню! 
	this.MenuComplete += new EventHandler(StatusForm_MenuDone);
	BuildMenuSystem();
	}

	private void FileExit_Selected(object sender, EventArgs e)
	{
		sbPnlPrompt.Text = "Terminates this app";
	}

	private void HelpAbout_Selected(object sender, EventArgs e)
	{
		sbPnlPrompt.Text = "Displays app info";
	}
		
	private void StatusForm_MenuDone(object sender, EventArgs e)
	{
		sbPnlPrompt.Text = "Ready";
	}
Описание слайда:
Отображение в строке состояния подсказок к пунктам меню public class MainForm : Form { ... public MainForm() { ... // Событие MenuComplete происходит при выходе пользователем из меню. // Мы будем реагировать на это событие, возвращая в левую панель строку // по умолчанию "Ready". Если мы этого не сделаем, в строке состояния // останется значение, которое изменилось при выборе пользователем пункта меню! this.MenuComplete += new EventHandler(StatusForm_MenuDone); BuildMenuSystem(); } private void FileExit_Selected(object sender, EventArgs e) { sbPnlPrompt.Text = "Terminates this app"; } private void HelpAbout_Selected(object sender, EventArgs e) { sbPnlPrompt.Text = "Displays app info"; } private void StatusForm_MenuDone(object sender, EventArgs e) { sbPnlPrompt.Text = "Ready"; }

Слайд 70





Отображение в строке состояния подсказок к пунктам меню
// Вспомогательные функции
private void BuildMenuSystem()
{
	// Создаем главное меню
	mainMenu = new MainMenu();

	// Создаем меню File
	MenuItem miFile = mainMenu.MenuItems.Add("&File");
	miFile.MenuItems.Add(new MenuItem("E&xit", 
				new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));

	// Обрабатываем событие Select для пункта меню Exit
	miFile.MenuItems[0].Select += new EventHandler(FileExit_Selected);

	// Теперь создаем меню Help | About
	MenuItem miHelp = mainMenu.MenuItems.Add("Help");
	miHelp.MenuItems.Add(new MenuItem("&About", 
				new EventHandler(this.HelpAbout_Clicked), Shortcut.CtrlA));

	// Обрабатываем событие Select для пункта меню About
	miHelp.MenuItems[0].Select += new EventHandler(HelpAbout_Selected);

	// Присоединяем главное меню к объекту Form
	this.Menu = mainMenu;
}
...
}
Описание слайда:
Отображение в строке состояния подсказок к пунктам меню // Вспомогательные функции private void BuildMenuSystem() { // Создаем главное меню mainMenu = new MainMenu(); // Создаем меню File MenuItem miFile = mainMenu.MenuItems.Add("&File"); miFile.MenuItems.Add(new MenuItem("E&xit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX)); // Обрабатываем событие Select для пункта меню Exit miFile.MenuItems[0].Select += new EventHandler(FileExit_Selected); // Теперь создаем меню Help | About MenuItem miHelp = mainMenu.MenuItems.Add("Help"); miHelp.MenuItems.Add(new MenuItem("&About", new EventHandler(this.HelpAbout_Clicked), Shortcut.CtrlA)); // Обрабатываем событие Select для пункта меню About miHelp.MenuItems[0].Select += new EventHandler(HelpAbout_Selected); // Присоединяем главное меню к объекту Form this.Menu = mainMenu; } ... }

Слайд 71





Панель инструментов
Класс ToolBar
Класс ToolBarButton
Поместить кнопки в ToolBarButtonCollection объекта ToolBar
Описание слайда:
Панель инструментов Класс ToolBar Класс ToolBarButton Поместить кнопки в ToolBarButtonCollection объекта ToolBar

Слайд 72





Свойства класса ToolBar
Описание слайда:
Свойства класса ToolBar

Слайд 73





Свойства класса ToolBarButton
Описание слайда:
Свойства класса ToolBarButton

Слайд 74





Простейшая (без изображений) панель
public class MainForm : Form
{
	// Создаем панель инструментов и две кнопки
	private ToolBarButton tbSaveButton = new ToolBarButton();
	private ToolBarButton tbExitButton = new ToolBarButton();
	private ToolBar toolBar = new ToolBar();

	public MainForm()
	{
		...
		BuildToolBar();		// Вспомогательная функция
	}
	...
Описание слайда:
Простейшая (без изображений) панель public class MainForm : Form { // Создаем панель инструментов и две кнопки private ToolBarButton tbSaveButton = new ToolBarButton(); private ToolBarButton tbExitButton = new ToolBarButton(); private ToolBar toolBar = new ToolBar(); public MainForm() { ... BuildToolBar(); // Вспомогательная функция } ...

Слайд 75





Простейшая (без изображений) панель
private void BuildToolBar()
{
	// Настраиваем каждую кнопку
	tbSaveButton.Text = "Save";
	tbSaveButton.ToolTipText = "Save";
	tbExitButton.Text = "Exit";
	tbExitButton.ToolTipText = "Exit";

// Настраиваем параметры панели инструментов и добавляем на нее кнопку 
toolBar.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
toolBar.ShowToolTips = true;
toolBar.Buttons.AddRange(new ToolBarButton[] 
			{tbSaveButton, tbExitButton});
toolBar.ButtonClick += new ToolBarButtonClickEventHandler(ToolBar_Clicked);
// Добавляем панель инструментов в коллекцию Controls 
this.Controls.Add(toolBar);
}
// Обработчик событий для кнопок
private void ToolBar_Clicked(object sender, ToolBarButtonClickEventArgs e)
   { MessageBox.Show(e.Button.ToolTipText);}
}
Описание слайда:
Простейшая (без изображений) панель private void BuildToolBar() { // Настраиваем каждую кнопку tbSaveButton.Text = "Save"; tbSaveButton.ToolTipText = "Save"; tbExitButton.Text = "Exit"; tbExitButton.ToolTipText = "Exit"; // Настраиваем параметры панели инструментов и добавляем на нее кнопку toolBar.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; toolBar.ShowToolTips = true; toolBar.Buttons.AddRange(new ToolBarButton[] {tbSaveButton, tbExitButton}); toolBar.ButtonClick += new ToolBarButtonClickEventHandler(ToolBar_Clicked); // Добавляем панель инструментов в коллекцию Controls this.Controls.Add(toolBar); } // Обработчик событий для кнопок private void ToolBar_Clicked(object sender, ToolBarButtonClickEventArgs e) { MessageBox.Show(e.Button.ToolTipText);} }

Слайд 76





Добавление изображений
public class MainForm : Form
{
   // Объект для хранения набора изображений
   private ImageList toolBarIcons = new ImageList();
   ...
   private void BuildToolBar()
   {
	// Настраиваем кнопку "Save"
	tbSaveButton.ImageIndex = 0;
	tbSaveButton.ToolTipText = "Save";

	// Настраиваем кнопку "Exit"
	tbExitButton.ImageIndex = 1;
	tbExitButton.ToolTipText = "Exit";

	// Создаем панель инструментов и добавляем на нее кнопки 
	toolBar.ImageList = toolBarIcons;
		...
	// Загружаем значки (соответствующие файлы должны быть в каталоге приложения
	toolBarIcons.ImageSize = new System.Drawing.Size(32, 32);
	toolBarIcons.Images.Add(new Icon("filesave.ico"));
	toolBarIcons.Images.Add(new Icon("fileexit.ico"));
	toolBarIcons.ColorDepth = ColorDepth.Depth16Bit;
	toolBarIcons.TransparentColor = System.Drawing.Color.Transparent;
			...
   }
}
Описание слайда:
Добавление изображений public class MainForm : Form { // Объект для хранения набора изображений private ImageList toolBarIcons = new ImageList(); ... private void BuildToolBar() { // Настраиваем кнопку "Save" tbSaveButton.ImageIndex = 0; tbSaveButton.ToolTipText = "Save"; // Настраиваем кнопку "Exit" tbExitButton.ImageIndex = 1; tbExitButton.ToolTipText = "Exit"; // Создаем панель инструментов и добавляем на нее кнопки toolBar.ImageList = toolBarIcons; ... // Загружаем значки (соответствующие файлы должны быть в каталоге приложения toolBarIcons.ImageSize = new System.Drawing.Size(32, 32); toolBarIcons.Images.Add(new Icon("filesave.ico")); toolBarIcons.Images.Add(new Icon("fileexit.ico")); toolBarIcons.ColorDepth = ColorDepth.Depth16Bit; toolBarIcons.TransparentColor = System.Drawing.Color.Transparent; ... } }

Слайд 77





Создание панели инструментов в VS
Описание слайда:
Создание панели инструментов в VS

Слайд 78





Пример работы с системным реестром
// Предположим, что у нас установлены следующие значения переменных: 
// Color currColor = Color.MistyRose;
// private int currFontSize = TheFontSize.Normal;
private void FileSave_Clicked(object sender, EventArgs e)
{
	// Сохраняем настройки пользователя в реестре
	RegistryKey regKey = Registry.CurrentUser;
	regKey = regKey.CreateSubKey("Software\\Intertech\\Chapter8App");
	regKey.SetValue("CurrSize", currFontSize);
	regKey.SetValue("CurrColor", currColor.Name);
}
Описание слайда:
Пример работы с системным реестром // Предположим, что у нас установлены следующие значения переменных: // Color currColor = Color.MistyRose; // private int currFontSize = TheFontSize.Normal; private void FileSave_Clicked(object sender, EventArgs e) { // Сохраняем настройки пользователя в реестре RegistryKey regKey = Registry.CurrentUser; regKey = regKey.CreateSubKey("Software\\Intertech\\Chapter8App"); regKey.SetValue("CurrSize", currFontSize); regKey.SetValue("CurrColor", currColor.Name); }

Слайд 79





Пример работы с системным реестром
public MainForm()
{
	// Открываем параметр реестра
	RegistryKey regKey = Registry.CurrentUser;
	regKey = regKey.CreateSubKey("Software\\Intertech\\Chapter8App");

	// Считываем значения и присваиваем их соответствующим переменным 
	currFontSize = (int)regKey.GetValue("CurrSize", currFontSize);
	string c = (string)regKey.GetValue("CurrColor", currColor.Name);
	currColor = Color.FromName(c);
	BackColor = currColor;

		...
}
Описание слайда:
Пример работы с системным реестром public MainForm() { // Открываем параметр реестра RegistryKey regKey = Registry.CurrentUser; regKey = regKey.CreateSubKey("Software\\Intertech\\Chapter8App"); // Считываем значения и присваиваем их соответствующим переменным currFontSize = (int)regKey.GetValue("CurrSize", currFontSize); string c = (string)regKey.GetValue("CurrColor", currColor.Name); currColor = Color.FromName(c); BackColor = currColor; ... }

Слайд 80





Запись в журнал событий
// Срабатывает при активизации пользователем пункта меню File4Exit 
private void FileExit_Clicked(object sender, EventArgs e)
{
  // Мы делаем записи в журнал событий приложений ("Application"),
  //  могли бы  и в другой... 
	EventLog log = new EventLog();
	log.Log = "Application";
	log.Source = Text;
	log.WriteEntry("Hey dude, this app shut down...");
	log.Close();

	// Завершаем работу приложения
	this.Close();
}
Описание слайда:
Запись в журнал событий // Срабатывает при активизации пользователем пункта меню File4Exit private void FileExit_Clicked(object sender, EventArgs e) { // Мы делаем записи в журнал событий приложений ("Application"), // могли бы и в другой... EventLog log = new EventLog(); log.Log = "Application"; log.Source = Text; log.WriteEntry("Hey dude, this app shut down..."); log.Close(); // Завершаем работу приложения this.Close(); }

Слайд 81





Чтение журнала событий
private void FileExit_Clicked(object sender, EventArgs e)
{
		...
// Отображаем первые пять записей журнала событий приложений 
for(int i = 0; i < 5; i++)
{
try
{
MessageBox.Show("Message: " + log.Entries[i].Message + "\n" + "Box name: " 
		+ log.Entries[i].MachineName + "\n" + "App: " + 
		log.Entries[i].Source + "\n" + "Time entered: " + 
		log.Entries[i].TimeWritten, "Application Log entry:");
}
catch {}
}
}
Описание слайда:
Чтение журнала событий private void FileExit_Clicked(object sender, EventArgs e) { ... // Отображаем первые пять записей журнала событий приложений for(int i = 0; i < 5; i++) { try { MessageBox.Show("Message: " + log.Entries[i].Message + "\n" + "Box name: " + log.Entries[i].MachineName + "\n" + "App: " + log.Entries[i].Source + "\n" + "Time entered: " + log.Entries[i].TimeWritten, "Application Log entry:"); } catch {} } }



Похожие презентации
Mypresentation.ru
Загрузить презентацию