Что такое windows forms

Обновлено: 07.07.2024

Любая программа, использующая Wondows Forms может иметь следующий вид:

MainForm - главная форма.

Windows Forms содержит следующие классы:

System.Windows.Forms.Button - класс кнопки. Синтаксис ее создания:

name - имя кнопки.

В качестве значения должна быть точка System.Drawing.Point.

System.Windows.Forms.Label - класс метки. Синтаксис ее создания:

name - имя метки.

Свойство Значение
Width Ширина метки.
Height Высота метки.
Text Текст на метки.
BackColor Цвет фона метки.
ForeColor Цвет текста метки.
Location Позиция метки на форме.
AutoSize Будет ли меняться размер метки, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на метке.
Parent Родительский виджет.
Visible Видна ли метка.

name - имя флажка.

Свойство Значение
Width Ширина флажка.
Height Высота флажка.
Text Текст на флажка.
BackColor Цвет фона флажка.
ForeColor Цвет текста флажка.
Location Позиция флажка форме.
AutoSize Будет ли меняться размер флажка, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на флажка.
Parent Родительский виджет.
Visible Виден ли флажок.
Checked Определяет установлен ли флажок или нет.

System.Windows.Forms.RadioBox- класс радио-кнопки. Синтаксис ее создания:

name - имя радио-кнопки.

Свойство Значение
Width Ширина радио-кнопки.
Height Высота радио-кнопки.
Text Текст на радио-кнопки.
BackColor Цвет фона радио-кнопки.
ForeColor Цвет текста радио-кнопки.
Location Позиция радио-кнопки форме.
AutoSize Будет ли меняться размер радио-кнопки, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на радио-кнопке.
Parent Родительский виджет.
Visible Видна ли радио-кнопка.
Checked Определяет установлена ли радио-кнопка или нет.

System.Windows.Forms.TrackBar - класс ползунка. Синтаксис его создания:

name - имя ползунка.

  • System.Windows.Forms.Orientation.Horizontal - горизонтальная
  • System.Windows.Forms.Orientation.Vertical - вертикальная
  • System.Windows.Forms.TickStyle.Both - с двух сторон
  • System.Windows.Forms.TickStyle.BottomRight - деления либо снизу (для горизонтального ползунка) или справа (для вертикального полузнка)
  • System.Windows.Forms.TickStyle.TopLeft - деления либо сверху (для горизонтального ползунка) или слева (для вертикального полузнка)
  • System.Windows.Forms.TickStyle.None - не отображаются

System.Windows.Forms.ListBox- класс списка. Синтаксис его создания:

name - имя списка.

Свойство Значение
Width Ширина списка.
Height Высота списка.
Location Позиция списка на форме.
Parent Родительский виджет.
Visible Виден ли список.
ItemHeight Высота элемента списка.
Items.Count Количество элементов списка.
Items.Item[k] K-ый элемент списка.
IntegralHeight Указывает будет ли подгоняться размер списка под размер элементов, чтобы был видны названия всех элементов полностью.
Событие Описание
Click Хранит ссылку на процедуру, которая выполнится при щелчке по списку.
SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка.

Процедура Значение
a. Items.Add(t) Добавляет в список элемент с текстом t.
a. Items.Clear Очищает список.

name - имя выпадающего списка.

Свойство Значение
Width Ширина выпадающего списка.
Height Высота выпадающего списка.
Parent Родительский виджет.
Visible Виден ли выпадающий список.
Count Количество элементов в выпадающем списке.
SelectedIndex Индекс выбранного элемента выпадающего списка.
SelectedItem Выбранный элемент выпадающего списка.
Items.Item[k] K-ый элемент выпадающего списка.
IntegralHeight Указывает будет ли подгоняться размер выпадающего списка под размер элементов, чтобы был видны названия всех элементов полностью.
Событие Описание
Click Хранит ссылку на процедуру, которая выполнится при щелчке по выпадающему списку.
SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента выпадающего списка.

Ниже a - выпадающий список.

Функция Описание
a. Items.Add Добавляет в выпадающий список элемент.
a. Items.Clear Удаляет все элементы выпадающего списка.

System.Windows.Forms.GroupBox- класс фрейма. Синтаксис его создания:

name - имя кнопки.

В качестве значения должна быть точка System.Drawing.Point.

System.Windows.Forms.SplitContainer - класс элемента разделения окна. Синтаксис его создания:

name - имя элемента разделения окна.

В качестве значения должна быть точка System.Drawing.Point.

  • System.Windows.Forms.Orientation.Horizontal - горизонтальная
  • System.Windows.Forms.Orientation.Vertical - вертикальная

System.Windows.Forms.MenuStrip - класс главного меню. Синтаксис его создания:

name - имя главного меню.

  • объект перемещения меню спрятан - System.Windows.Forms.ToolStripGripStyle.Hidden
  • объект перемещения меню виден- System.Windows.Forms.ToolStripGripStyle.Visisble

Ниже a - главное меню.

Процедура Значение
a. Items.Add(k) Добавляет подменю k в главное меню.

System.Windows.Forms.ToolStripMenuItem - класс подменю. Синтаксис его создания:

name - имя подменю.

Свойство Значение
BackColor Цвет фона заголовка подменю.
ForeColor Цвет текста заголовка подменю.

Ниже b - подменю.

  • t - текст, отображаемый на пункте подменю; i - иконка пункта подменю (чтобы ее не было пишите nil); act - процедура, выполняющаяся при нажатии на этот пункт меню.
  • иконка зугружается следующим образом: new System.Drawing.Bitmap(GetResourceStream(путь_к_изображению))

System.Windows.Forms.Form - класс формы. Общий синтаксис ее создания:

Свойство Описане
a. Controls.Add(виджет) Добавляет виджет на форму.

Cursor - объект курсора в Windows Forms.

Свойство Значение
System.Windows.Forms.Cursor.Position.X Позиция курсора по X.
System.Windows.Forms.Cursor.Position.Y Позиция курсора по Y.

Любая процедура, являющаяся обработчиком события должна иметь вид:

p - имя процедуры.

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

СОДЕРЖАНИЕ

Архитектура

Windows Forms похожа на библиотеку Microsoft Foundation Class (MFC) при разработке клиентских приложений. Он предоставляет оболочку, состоящую из набора классов C ++ для разработки приложений Windows. Однако он не предоставляет платформу приложений по умолчанию, такую ​​как MFC. Каждый элемент управления в приложении Windows Forms - это конкретный экземпляр класса.

Функции

Все визуальные элементы в библиотеке классов Windows Forms являются производными от класса Control. Это обеспечивает минимальную функциональность элемента пользовательского интерфейса, такую ​​как расположение, размер, цвет, шрифт, текст, а также общие события, такие как щелчок и перетаскивание. Класс Control также имеет поддержку закрепления, позволяющую элементу управления переупорядочивать свое положение под своим родительским элементом. Поддержка Microsoft Active Accessibility в классе Control также помогает ослабленным пользователям лучше использовать Windows Forms.

Помимо предоставления доступа к собственным элементам управления Windows, таким как кнопка, текстовое поле, флажок и список, Windows Forms добавила собственные элементы управления для размещения ActiveX , компоновки, проверки и привязки данных. Эти элементы управления отображаются с использованием GDI +.

История и будущее

Обратная совместимость XAML с Windows Forms

Для будущего развития Microsoft сменила Windows Forms с помощью графического интерфейса пользователя на основе XAML с использованием таких фреймворков, как WPF и UWP . Однако размещение компонентов графического интерфейса с помощью перетаскивания аналогично Windows Forms по-прежнему обеспечивается в XAML путем замены корневого элемента XAML страницы / окна на элемент управления пользовательского интерфейса «Canvas». При внесении этого изменения пользователь может создать окно аналогично Windows Forms, напрямую перетаскивая компоненты с помощью графического интерфейса Visual Studio.

В то время как XAML обеспечивает обратную совместимость размещения перетаскиванием через элемент управления Canvas, элементы управления XAML похожи только на элементы управления Windows Forms и не являются взаимно однозначно обратно совместимыми. Они выполняют аналогичные функции и имеют похожий внешний вид, но свойства и методы достаточно разные, чтобы потребовать переназначения одного API на другой.

Альтернативная реализация

Модель программирования Windows Forms

В Windows Forms термин "форма" - синоним окна верхнего уровня. Главное окно приложения - форма. Любые другие окна верхнего уровня, которые имеет приложение - также формы. Окна диалога также считаются формами. Несмотря на название, приложения, использующие Windows Forms, не выглядят как формы. Подобно традиционным Windows-приложениям приложения осуществляют полный контроль над событиями в собственных окнах.

Приложения, использующие Windows Forms используют классы System.WinForms. Этот раздел включает такие классы, как Form, который моделирует поведение окон или форм; Menu, который представляет меню; Clipboard, который дает возможность приложениям Windows Forms использовать буфер обмена. Он также содержит многочисленные классы, предоставляющие средства управления, например: Button, TextBox, ListView, MonthCalendar и т.д. Эти классы могут быть включены в приложение либо с использованием только имени класса, либо с использованием полного имени, например: System.WinForms.Button.

В основе почти каждого приложения, написанного с применением Windows Forms, - производный класс от System.WinForms.Form. Образец этого класса представляет главное окно приложения. System.WinForms.Form имеет множество свойств и методов, которые имеют богатый программный интерфейс к формам. Хотите знать размеры клиентской области формы? В Windows вы вызвали бы функцию API GetClientRect. В Windows Forms нужно использовать свойства ClientRectangle или ClientSize.

Приложения, основанные на Windows Forms, которые используют кнопки, списки и другие типы компонентов Windows, используют классы управления System.WinForms, значительно упрощающие программирование управления. Хотите создать стилизованную кнопку с изображением в виде фона? Нет проблем. Включите требуемое изображение в объект System.Drawing.Bitmap и назначьте его свойству кнопки BackgroundImage. Как насчет управления цветом? Вы когда-либо пробовали настраивать цвет фона текстового поля? В Windows Forms это просто: нужно просто присвоить цвет свойству BackColor, все отстальное система сделает сама.

Другой важный "строительный" блок приложения, который использует Windows Forms - класс System.WinForms по имени Application. Этот класс содержит статический метод Run, который загружает приложение и отображает окно.

EventHandler - специальный обработчик событий, который выполняет метод OnButtonClicked когда MyButton создает событие Click. Первый параметр OnButtonClicked идентифицирует объект, который вызвал событие. Второй параметр в основном бессмысленен для события Click, но используется некоторым другие типами событий, чтобы передать дополнительную информацию.

Приложение "Hello World" с Windows Forms

Начнем сначала. Слово "using" вверху файла позволяют сослаться на классы в пакетах System, System.WinForms и System.Drawing. Например,

В приложении, использующем Windows Forms, каждое окно - или форма - представлено экземпляром класса, производного от System.WinForms.Form (Листинг 1 - класс MyForm). Конструктор MyForm устанавливает текст заголовка формы "Windows Forms Demo" используя свойство Text. Text - одно из более чем 100 свойств, которые форма наследует от System.WinForms.Form, но пока единственное, в котором вы нуждаетесь.

Установка Visual Studio для Windows Forms

Разработка классических приложений .NET Windows Forms в Visual Studio

После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. На стартовом экране выберем Create a new project (Создать новый проект)

На следующем окне в качестве типа проекта выберем Windows Forms App :

Далее на следующем этапе нам будет предложено указать имя проекта и каталог, где будет располагаться проект.

В поле Project Name дадим проекту какое-либо название. В моем случае это HelloApp .

После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:

Справа находится окно Solution Explorer, в котором можно увидеть структуру нашего проекта. В данном случае у нас сгенерированная по умолчанию структура:

Далее идет файл единственной в проекте формы - Form1.cs , который по умолчанию открыт в центральном окне:

Класс формы - Form1 представляет графическую форму - фактически то окно, которое мы увидим на экране при запуске проекта.

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

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

Рядом с этим элементом можно заметить другой файл формы - Form1.Designer.cs . Это файл дизайнера - он содержит определение компонентов формы, добавленных на форму в графическом дизайнере и именно его код по сути передается выше через вызов InitializeComponent()

Program.cs определяет точку входа в приложение:

Метод Main снабжен атрибутом [STAThread] . Этот атрибут, грубого говоря, необходим для корректной работы компонентов Windows. В самом методе сначала вызывается метод

который устанавливает некоторую базовую конфигурацию приложения

Затем вызывается метод

в который передается объект отображаемой по умолчанию на экране формы.

Настройка компиляции проекта

В итоге нам откроектся файл с расширением csproj , который называется по имени проекта (например, HelloApp.csproj) со следующим содержимым:

Для компиляции приложения Windows Forms указаны следующие настройки:

OutputType : определяет выходной тип проекта. Должен иметь значение WinExe - то есть выполняемое приложение с расширением exe под Windows

Nullable : подключает в проект функционалность ссылочных nullable-типов

UseWindowsForms : указывает, будет ли проект использовать Windows Forms (для этого устанавливается значение true )

ImplicitUsings : подключает в проект функциональность неявно подключаемых глобальных пространств имен

Запуск приложения

Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio.

Запуск проекта Windows Forms в Visual Studio

После этого запустится пустая форма Form1 по умолчанию.

После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог \bin\Debug\net6.0-windows

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

Читайте также: