Программирование под Windows

Пространство имен System. Windows. Forms содержит все классы для создания пользовательских приложений под Windows.

Каждое приложение Windows представляет собой объект класса, являющийся производным от System. Windows. Forms. Form.

Рассмотрим процесс создания простейшего приложения Windows, которое выводит окно, следующего вида:

Рис 5.

Рис.5.

Для создания клиентского окна необходимо создать класс формы производный от System.Windows.Forms.Form:

public class Form1: System.Windows.Forms.Form

{

: Тело класса

}

Затем в теле класса объявить элементы управления, позволяющие взаимодействовать приложению с пользователем. Все элементы управления Windows определены в пространстве имен System.Windows.Forms. В нашем случае, для вывода текста “Привет Мир”, необходимо объявить элемент управления – статический текст (Label), а также кнопку (Button) для завершения работы приложения:

private System.Windows.Forms.Label lblTxt;

private System.Windows.Forms.Button btnExit;

Следующим шагом необходимо в конструкторе формы определить многочисленные свойства формы как графического объекта (геометрические размеры, местоположение, фон, текст заголовка, и т.п.). К счастью эти свойства формы имеют значения по умолчанию, и, если эти значения устраивают программиста, то их можно не изменять. В нашем приложении мы изменим только два свойства – размер клиентской области окна (ClientSize) и текст заголовка формы (Text):

ClientSize = new System.Drawing.Size (180,120);

Text = "Hello World";

Кроме этого в конструкторе формы необходимо создать экземпляры элементов управления:

lblTxt = new System.Windows.Forms.Label();

btnExit = new System.Windows.Forms.Button();

Элементы управления тоже имеют многочисленные свойства, и если необходимо задать их значения, отличные от значений по умолчанию, то их также необходимо определить в конструкторе формы. Например, изменение свойств кнопки, таких как местоположение (Location) ее на поверхности формы, ее размера (Size), текста на поверхности (Text) кнопки, будет выглядеть следующим образом:

btnExit.Location = new System.Drawing.Point(50,60); //x=50,y=60

btnExit.Size = new System.Drawing.Size(80,20); //ширина 80,высота 20

btnExit.Text = "Выход";

Далее, для включения созданного элемента в список элементов управления формы, в конструкторе формы необходимо вызвать метод Add(), передав ему в качестве параметра ссылку на элемент управления:

Controls.Add(btnExit);

Так как наше приложение должно реагировать на щелчок мышью на поверхности кнопки, необходимо определить метод обработчик события, например, следующим образом:

protected void btnExit_Click(object sender,System.EventArgs e)

{

Application.Exit(); //выход из приложения

}

В конструкторе формы подписаться на событие Click класса – издателя (Button), представленное делегатом System.EventHandler, передав его конструктору имя обработчика события:

btnExit.Click += new System.EventHandler (btnExit_Click);

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

using System;

using System.Windows.Forms;

namespace WindowsApp

{

public class Form1: System.Windows.Forms.Form

{

private System.Windows.Forms.Label lblTxt;

private System.Windows.Forms.Button btnExit;

public Form1()

{

//Изменение некоторых свойств формы

ClientSize = new System.Drawing.Size (180,120);

Text = "Hello World";

//Создание статического текста и его свойств

lblTxt = new System.Windows.Forms.Label();

lblTxt.Location = new System.Drawing.Point(50,20);

lblTxt.Size = new System.Drawing.Size(80,20);

lblTxt.Text = "Привет Мир";

Controls.Add(lblTxt); //Добавление элемента

//Создание кнопки и определение некоторых ее свойств

btnExit = new System.Windows.Forms.Button();

btnExit.Location = new System.Drawing.Point(50,60);

btnExit.Size = new System.Drawing.Size(80,20);

btnExit.Text = "Выход";

Controls.Add(btnExit); //Добавление элемента

//Здесь осуществляется подписка на событие:

btnExit.Click += new System.EventHandler(btnExit_Click);

}

static void Main()

{

Application.Run(new Form1());

}

//Метод – обработчик события:

protected void btnExit_Click(object sender,System.EventArgs e)

{

Application.Exit();

}

}

}


Вопросы:

1. Каким образом программно сгенерировать исключение?

2. Как передать информацию о характере произошедшего исключения обработчику исключения?

3. Как создать заготовку клиентского окна Windows?

4. В каком пространстве имен определены элементы управления Windows?

5. Как создаются элементы управления Windows?

6. Как добавить в список элементов управления новый элемент?

7. Как задаются свойства элементов управления?

8. Каким образом осуществляется «подписка» на событие?

9. Как определить функцию – обработчик события?


Создание приложения с помощью мастера интегрированной рабочей среды Visual Studio.NET

Интегрированная рабочая среда Visual Studio.NET поддерживает технологию быстрой разработки приложения – RAD (Rapid Application Development). При создании проекта Windows Application перед нами появится пустая поверхность окна приложения – форма. В среде визуальной разработки, которую нам предоставляет Visual Studio.NET, размер, местоположение, цвет фона, имя заголовка и другие свойства формы можно изменять с помощью окна свойств – Properties.

Панель Properties содержит следующие разделы свойств:

Accessibility ­− доступность

Appearance − вид

Behavior − поведение

Configurations − конфигурации

Data − данные

Design − проект

Focus − фокус

Layout − размещение

Window style − стиль окна

Используя раздел свойств Appearance можно изменять:

· цвет поверхности – BackColor (по умолчанию такого же цвета будут все элементы управления);

· фоновую картинку − BackgroundImage,

· вид курсора − Cursor,

· цвет шрифта − ForeColor,

· стиль окна − FormBorderStyle,

· текст заголовка формы − Text,

· местоположение текста заголовка формы − RightToLeft

Используя раздел свойств Layout можно изменять:

· размер окна − Size

· параметр, определяющий начальную позицию − StartPosition,

· координаты левого верхнего угла формы − Location (актуален, если StartPosition = Manual),

· вид начального отображения формы (минимизированное, нормальное или максимизированное) − WindowState,

· размер формы в максимизированном состоянии − MaxsimumSize,

· размер формы в минимизированном состоянии − MinimumSize,

Используя раздел свойств Window style можно изменять:

· вид иконки − Icon

· доступность кнопки максимизации −MaximizeBox

· доступность кнопок минимизации − MinimizeBox

и т.д.

Легко заметить, что мы можем изменять размеры формы не только с помощью панели свойства (Properties), но и с помощью мыши, при этом размеры (Size) будут меняться автоматически.

Создадим приложение с помощью технологии RAD полностью аналогичное приложению предыдущего примера и проанализируем текст программы, подготавливаемый мастером приложения.

Для этого зададим на панели свойств (Properties) размер окна (Size) 180 на 120 пикселей и текст заголовка формы (Text) соответственно.

Затем, воспользовавшись панелью Toolbox, поместим на форму статический текст (Label) и кнопку (Button). Установим с помощью панели Properties свойства Location, Size, Name и Text для этих элементов управления, как и в предыдущем примере. Двойной щелчок мыши на изображении кнопки приводит к автоматической подписке на событие Click и созданию шаблона обработчика события:

private void btnExit_Click(object sender, System.EventArgs e)

{

}

В тело обработчика события остается только добавить код:

Application.Exit();

скомпилировать и запустить на выполнение приложение.

Приложение Windows, подготовленное мастером будет выглядеть следующим образом:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace WindowsApplication7

{

public class Form1: System.Windows.Forms.Form

{

private System.Windows.Forms.Label lblTxt;

private System.Windows.Forms.Button btnExit;

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.Container components = null;

public Form1()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

//

// TODO: Add any constructor code after InitializeComponent call

//

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose(bool disposing)

{

if(disposing)

{

if (components!= null)

{

components.Dispose();

}

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// требуется для поддержки Windows Forms Designer

/// не модифицировать в редакторе текста.

/// </summary>

private void InitializeComponent()

{

this.lblTxt = new System.Windows.Forms.Label();

this.btnExit = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// lblTxt

//

this.lblTxt.Location = new System.Drawing.Point(50, 20);

this.lblTxt.Name = "lblTxt";

this.lblTxt.Size = new System.Drawing.Size(80, 20);

this.lblTxt.TabIndex = 0;

this.lblTxt.Text = "Привет Мир";

//

// btnExit

//

this.btnExit.Location = new System.Drawing.Point(50, 60);

this.btnExit.Name = "btnExit";

this.btnExit.Size = new System.Drawing.Size(80, 20);

this.btnExit.TabIndex = 1;

this.btnExit.Text = "Выход";

this.btnExit.Click += new System.EventHandler(this.btnExit_Click);

//

// Form1

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(172, 93);

this.Controls.AddRange(new System.Windows.Forms.Control[] {

this.btnExit,

this.lblTxt});

this.Name = "Form1";

this.Text = "Hello World";

this.ResumeLayout(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.Run(new Form1());

}


private void btnExit_Click(object sender, System.EventArgs e)

{

Application.Exit();

}

}

}

Как видим, оно имеет некоторые отличия от текста приложения подготовленного вручную:

1. Создание элементов управления и задание их свойств происходит в теле функции InitializeComponent(), которая в свою очередь, вызывается конструктором формы.

2. При определении свойств объекта мастер приложения добавил для каждого элемента управления еще одно свойство TabIndex, которое определяет порядок перехода фокуса при нажатии клавиши Tab.

3. В классе формы мастером создается закрытый объект контейнерного типа: private System.ComponentModel.Container components = null; Этот объект используется в виртуальной функции Dispose().

4. Мастер приложения в классе формы производит переопределение виртуальной функции Dispose() базового класса, необходимой для внутренних целей. Эту функцию использует сборщик мусора для предотвращения утечки памяти.

5. Добавление элементов на форму осуществляется путем вызова функции Controls.AddRange(), принимающий в качестве параметра массив, являющийся объектом класса System.Windows.Forms.Control. Массив инициализируется в момент создания элементами управления.


Вопросы:

1. Какие разделы свойств содержит панель Properties.

2. В теле какой функции происходит создание элементов управления Windows?

3. Что означает свойство TabIndex элемента управления?

4. С помощью вызова, какой функции осуществляется добавление элементов управления на поверхность формы? Что она принимает в качестве параметров?

5. Как задается местоположение и размер элементов управления с помощью мыши?

6. Как задается местоположение и размер элементов управления с помощью панели Properties?

7. Как создаются обработчики событий с помощью панель Properties?

8. В теле какой функции мастер создания приложения осуществляет “подписку” на событие?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: