Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5678 / 802 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 16:

Форма

Аннотация: В этой лекции рассказывается о формах. Форма — это класс. Форма предназначена для реализации интерфейса пользователя приложения. Содержит большой набор свойств, методов, событий для реализации различных вариантов пользовательского интерфейса. Является окном и наследует классу Control

Форма — это класс. Форма предназначена для реализации интерфейса пользователя приложения. Содержит большой набор свойств, методов, событий для реализации различных вариантов пользовательского интерфейса. Является окном и наследует классу Control.

Объект-представитель класса Form — это окно, которое появляется в Windows- приложении. Это означает, что объект-представитель класса Form поддерживает механизмы управления, реализованные на основе обмена сообщениями Windows. Структура сообщений и стандартные механизмы управления здесь не рассматриваются. Достаточно знать, что класс формы содержит объявление множества событий, для которых на основе стандартного интерфейса (сигнатуры) могут быть подключены и реализованы функции обработки событий.

Этот класс можно использовать как основу для создания различных вариантов окошек:

  • стандартных;
  • инструментальных;
  • всплывающих;
  • borderless;
  • диалоговых.
  • Создается "окно", а класс называется формой – поскольку в окне приложения можно разместить элементы управления, обеспечивающие интерактивное взаимодействие приложения и пользователя (заполните форму, please).

Известна особая категория форм – формы MDI – формы с многодокументным интерфейсом (the multiple document interface).

Эти формы могут содержать другие формы, которые в этом случае называются MDI child forms. MDI-форма создается после установки в true свойства IsMdiContainer.

Используя доступные в классе Формы свойства, можно определять внешний вид, размер, цвет и особенности управления создаваемого диалога:

  • свойство Text позволяет специфицировать надпись в заголовке окна приложения;
  • свойства Size и DesktopLocation позволяют определять размеры и положение окна в момент его появления на экране монитора;
  • свойство ForeColor позволяет изменить предопределенный foreground цвет всех расположенных на форме элементов управления;
  • свойства FormBorderStyle, MinimizeBox и MaximizeBox позволяют изменять размеры окна приложения во время его выполнения.

Методы класса обеспечивают управление формой:

  • например, метод ShowDialog обеспечивает представление формы как модального диалога;
  • метод Show показывает форму как немодальный диалог;
  • метод SetDesktopLocation используется для позиционирования формы на поверхности Рабочего стола.

Форма может использоваться как стартовый класс приложения. При этом класс формы должен содержать точку входа – статический метод Main. В теле этого метода обычно размещается код, обеспечивающий создание и формирование внешнего вида формы.

Обычно заготовка формы "пишется" мастером. Пример кода простой заготовки окна прилагается. Форма проста настолько, что после некоторой медитации может быть воспроизведена вручную:

using System;
 using System.Drawing;
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.Data;

 namespace FormByWizard
 {

 // Summary description for Form1.

 public class Form1 : System.Windows.Forms.Form
 {

 // Required designer variable.

 private System.ComponentModel.Container components = null;

 public Form1()
 {
 //
 // Required for Windows Form Designer support
 //
 InitializeComponent();
 //
 // TODO: Add any constructor code after InitializeComponent call
 //
 }
 // Clean up any resources being used.

 protected override void Dispose( bool disposing )
 {
 if( disposing )
 {
 if (components != null) 
 {
 components.Dispose();
 }
 }
 base.Dispose( disposing );
 }

 #region Windows Form Designer generated code

 // Required method for Designer support – do not modify
 // the contents of this method with the code editor.

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

 // The main entry Point for the application.

 static void Main() 
 {
 Application.Run(new Form1());
 }
 }
 }
Листинг 16.1.

Главная проблема – метод InitializeComponent(). Это зона ответственности мастера приложений. Категорически не рекомендуется в этом методе делать что-либо самостоятельно — во избежание потери всего того, что там может быть построено, поскольку Мастер приложения может изменить содержимое тела метода в соответствии с изменениями внешнего вида приложения.

Важна строчка в теле функции Main

Application.Run(new Form1());

В принципе, эта строчка и отвечает за создание, "запуск" в потоке приложения и возможное появление на экране дисплея формы.

kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2