Принцип работы windows forms

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

Windows Forms и интеллектуальные клиентские приложения

Windows Forms позволяет разрабатывать интеллектуальные клиенты. Интеллектуальный клиент — это приложение с полнофункциональным графическим интерфейсом, простое в развертывании и обновлении, способное работать при наличии или отсутствии подключения к Интернету и использующее более безопасный доступ к ресурсам на локальном компьютере по сравнению с традиционными приложениями Windows.

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

Windows Forms — это технология разработки интеллектуальных клиентов для .NET Framework. Она представляет собой набор управляемых библиотек, упрощающих выполнение стандартных задач, таких как чтение из файловой системы и запись в нее. При использовании среды разработки, например Visual Studio, можно создавать приложения интеллектуальных клиентов Windows Forms, которые отображают информацию, запрашивают ввод от пользователей и взаимодействуют с удаленными компьютерами по сети.

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

При выполнении пользователем какого-либо действия с формой или одним из ее элементов управления создается событие. Приложение реагирует на эти события с помощью кода и обрабатывает события при их возникновении. Подробнее см. в разделе Создание обработчиков событий в Windows Forms.

Windows Forms включает широкий набор элементов управления, которые можно добавлять на формы: текстовые поля, кнопки, раскрывающиеся списки, переключатели и даже веб-страницы. Список всех элементов управления, которые можно использовать на форме, представлены в разделе Элементы управления для использования в формах Windows Forms. Если существующий элемент управления не удовлетворяет потребностям, в Windows Forms можно создать пользовательские элементы управления с помощью класса UserControl.

В состав Windows Forms входят многофункциональные элементы пользовательского интерфейса, позволяющие воссоздавать возможности таких сложных приложений, как Microsoft Office. Используя элементы управления ToolStrip и MenuStrip, можно создавать панели инструментов и меню, содержащие текст и рисунки, подменю и другие элементы управления, такие как текстовые поля и поля со списками.

С помощью Visual Studio и конструктора Windows Forms, можно легко создавать приложения Windows Forms путем перетаскивания элементов на формы. Достаточно выделить элемент управления курсором и поместить его в нужное место на форме. Для преодоления трудностей, связанных с выравниванием элементов управления, конструктор предоставляет такие средства, как линии сетки и линии привязки. С помощью Visual Studio или компиляции из командной строки, можно использовать элементы управления FlowLayoutPanel, TableLayoutPanel и SplitContainer для создания сложных макетов форм за короткое время.

Наконец, если нужно создать свои собственные элементы пользовательского интерфейса, пространство имен System.Drawing содержит широкий набор классов, необходимых для отрисовки линий, кругов и других фигур непосредственно на форме.

Note

Элементы управления Windows Forms не предназначены для маршалинга между доменами приложений. По этой причине технологии Майкрософт не поддерживают передачу элементов управления Windows Forms через границы AppDomain, хотя на первый взгляд базовый тип Control, класс MarshalByRefObject, подразумевает такую возможность. Приложения Windows Forms с несколькими доменами приложений поддерживаются только при условии, что элементы управления Windows Forms не передаются через границы доменов приложения.

Создание форм и элементов управления

Пошаговые инструкции по использованию этих возможностей можно найти в приведенных ниже разделах справки.

Описание Раздел справки
Использование элементов управления в формах Практическое руководство. Добавление элементов управления Windows Forms
Использование элемента управления ToolStrip Практическое руководство. Создание базового элемента управления ToolStrip со стандартными элементами с помощью конструктора
Создание графических элементов с помощью System.Drawing Приступая к программированию графики
Создание пользовательских элементов управления Практическое руководство. Наследование класса UserControl

Отображение данных и управление ими

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

При использовании интеллектуальных клиентов Windows Forms можно легко подключаться к источникам данных по сети. Компонент BindingSource представляет собой соединение с источником данных и предоставляет методы для привязки данных к элементам управления, перехода к предыдущей и последующей записи, редактирования записей и сохранения изменений обратно в исходный источник. Элемент управления BindingNavigator предоставляет простой интерфейс на основе компонента BindingSource для перехода между записями.

Вы можете легко создавать элементы управления с привязкой к данным с помощью окна «Источники данных». В нем приводятся имеющиеся в проекте источники данных, такие как базы данных, веб-службы и объекты. Создавать элементы управления с привязкой к данным можно путем перетаскивания объектов из этого окна в формы проекта. Также можно связывать существующие элементы управления с данными, перетаскивая объекты из окна «Источники данных» в существующие элементы управления.

Другой тип привязки к данным в формах Windows Forms — это параметры. Большинство интеллектуальных клиентских приложений должны сохранять некоторые сведения о своем состоянии во время выполнения, такие как последние известные размеры форм, а также сохранять пользовательские предпочтения, например место сохранения файлов по умолчанию. Параметры приложения отвечает этим требованиям, предоставляя простой способ хранения обоих типов сведений на клиентском компьютере. После определения этих параметров с помощью Visual Studio или редактора кода, значения параметров сохраняются в XML и автоматически считываются обратно в память во время выполнения.

Отображение данных и управление ими

Пошаговые инструкции по использованию этих возможностей можно найти в приведенных ниже разделах справки.

Описание Раздел справки
Использование компонента BindingSource Практическое руководство. Привязка элементов управления Windows Forms с компонентом BindingSource с помощью конструктора
Работа с источниками данных ADO.NET Практическое руководство. Сортировка и фильтрация данных ADO.NET с помощью Windows Forms посредством компонента BindingSource
Использование окна «Источники данных» Привязка элементов управления Windows Forms к данным в Visual Studio
Использование параметров приложения Практическое руководство. Создание параметров приложения

Развертывание приложений на клиентских компьютерах

После создания приложения необходимо отправить его пользователям, чтобы они могли установить и запустить его на своих клиентских компьютерах. При использовании технологии ClickOnce, можно развернуть приложения в Visual Studio с помощью нескольких щелчков и предоставить пользователям URL-адрес приложения в Интернете. ClickOnce управляет всеми элементами и зависимостями в приложении и обеспечивает его правильную установку на клиентском компьютере.

Приложения ClickOnce можно настроить так, чтобы они работали либо только при подключении к сети, либо как в сетевом, так и в автономном режиме. Если вы указываете, что приложение должно поддерживать работу в автономном режиме, то технология ClickOnce добавляет ссылку на приложение в меню Пуск пользователя. Пользователь может открыть приложение без использования URL-адреса.

Когда вы обновляете приложение, на веб-сервере публикуется новый манифест развертывания и новая копия приложения. ClickOnce обнаруживает доступное обновление и обновляет пользовательскую установку. Для обновления старых сборок написание специального кода не требуется.

Развертывание приложений ClickOnce

Общие сведения о ClickOnce можно найти в разделе Развертывание и безопасность технологии ClickOnce. Пошаговые инструкции по использованию этих возможностей можно найти в приведенных ниже разделах справки.

Описание Раздел справки
Развертывание приложения с помощью ClickOnce Практическое руководство. Публикация приложения ClickOnce с помощью мастера публикации

Пошаговое руководство: Развертывание вручную приложения ClickOnce

Обновление приложений при развертывании через ClickOnce Практическое руководство. Управление обновлениями для ClickOnce-приложения
Управление безопасностью в ClickOnce Практическое руководство. Включение параметров безопасности ClickOnce-приложений

Другие элементы управления и функции

В Windows Forms имеется множество других возможностей, которые упрощают и ускоряют реализацию распространных задач, таких как создание диалоговых окон, печать, добавление справки и документации, а также локализация приложений на различных языках. Кроме того, в Windows Forms применяется эффективная система безопасности .NET Framework. Благодаря ей можно создавать более надежные приложения.

Реализации других элементов управления и компонентов

Пошаговые инструкции по использованию этих возможностей можно найти в приведенных ниже разделах справки.

Описание Раздел справки
Печать содержимого формы Практическое руководство. Печать графических изображений в Windows Forms

Практическое руководство. Печать многостраничных текстовых файлов в Windows Forms

Дополнительные сведения о безопасности в Windows Forms Общие сведения о безопасности в Windows Forms

См. также

  • Приступая к работе с Windows Forms
  • Создание новой формы Windows Forms
  • Общие сведения об элементе управления ToolStrip
  • Общие сведения об элементе управления DataGridView
  • Общие сведения о компоненте BindingSource
  • Общие сведения о параметрах приложений
  • Развертывание и безопасность технологии ClickOnce

Last Updated :
25 Mar, 2025

Windows Forms (WinForms) is a GUI class library for building Windows desktop applications. Originally part of the .NET Framework, it is now supported in .NET Core, .NET 5+, .NET 8 (LTS), and .NET 9. Its main purpose is to provide an easier interface to develop applications for desktops, tablets, and PCs. It is also termed as the WinForms.

The applications developed using Windows Forms or WinForms are known as the Windows Forms Applications that run on the desktop computer. WinForms can be used only to develop Windows Forms Applications.

Creating First Windows Form

Let’s create the first Windows form here we are using Visual Studio Community 2022. Refer to this article which has a complete process on how to download Visual Studio.
Firstly we create a simple form that has a button and when we click on that button it shows a message let’s create it. These are the important steps to create a Windows form follow these steps as mentioned below:

Note: At the time of writing, Visual Studio Community 2022 is the latest stable version. However, check for newer versions like Visual Studio 2025 for updated features.

Step 1: Now open Visual Studio and different options are available there as of now.

CreateNewProject

Step 2: Now choose the Windows Forms App with C# and click on the next button.

Starting

Step 3: Now locate the project with the name here we are using the default name which is Form1 and it will open a form in the editor which we can further modify.

BasicStructure

Let’s understand the interface of Visual Studio Community 2022 for Windows forms

  • Editor Window (Main Window): Here, We will work with forms and code editing. Notice the layout of the form which is now blank. If we double-click the form then it will open the code for that.
  • Solution Explorer: A file manager for your project where you can navigate between forms, resources, and settings. For example, if we will select a file from this window then particular information will be displayed in the property window.
  • Properties Window: Allows you to modify UI elements such as colors, text alignment, and visibility. Also, we can change the properties of components or controls that will add to the forms.

In the image, we have two files that are open one Design and there is Form1.cs these two play a major role. We use the Form 1.cs file for the custom logic.

Step 4: Now open a Toolbox go to the view > Toolbox or ctrl + alt + x.

Toolbox: Provides drag-and-drop controls like buttons, text boxes, and labels to design the UI.

ToolBox

Step 5. Now open the common controls and drag and drop the button on the form where we want it to be placed.

Button1working

Step 6. Now open the properties of the button press right-click on the button and it will open the properties solution explorer now we can change the button name to Click here.

Properties

Step 7: Now again open the Toolbox and then click on the label and place where we want to show the message.

Label

Note: The Form1.Designer.cs file automatically generates UI code for Windows Forms. You should not manually edit this file, as changes may be lost. Instead, add event-handling logic in Form1.cs

Note: To handle user interactions, double-click a button to generate a Click event in Form1.cs. Here, you can define actions when the button is clicked.

Step 8. Now again double click on the button and it will open Form1.cs file and add the text when the button1 click action is triggered.

MessageBoxPrinting

Form1.cs file:

C#

namespace WinFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "Hello Geeks!";
        }

    }
}

Step 9: Now click on the start button or press F5 to execute the program.

Start

It will open a Windows form now to interact with the program.

Advantages

  • Comprehensive Controls: It comes up with a rich set of customizable controls (buttons, text boxes labels etc.) that makes it easier to use and allows more control through properties and event handling
  • Visual Designer: It comes up with the visual design helps to see the changes of form design and comes up with features like drag-and-drop for easy UI design.
  • Code Integration: A specially designed code editor for forms design helps to write application logic, handling events and data validation.
  • Use-cases: It is used in a variety of applications including the data entry tools, management system and business purposes.
  • Easy and optimal: Always become a first choice to make a lightweight desktop application for rapid development and come up with .NET support.

Первое приложение с .NET CLI

Последнее обновление: 25.11.2023

Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии — Window Forms, WPF, UWP.
Однако наиболее простой и удобной платформой до сих пор остается Window Forms или сокращенно WinForms. Данное руководство ставит своей целью дать понимание принципов создания графических интерфейсов с помощью технологии WinForms
и работы основных элементов управления.

Создадим первое приложение на C# и Windows Forms. Что нам для этого потребуется? Прежде всего необходим текстовый редактор для написания кода программы.
Можно взять любой понравившийся текстовый редактор, например, Visual Studio Code

Также для компиляции и запуска программы нам потребуется .NET SDK. Для его установки перейдем на официальный сайт по ссылке
.NET SDK

После установки .NET SDK для первого проекта определим какую-нибудь папку. Например, в моем случае это будет папка C:\dotnet\winforms\helloapp.
Откроем терминал/командную строку и перейдем к созданной папке проекта с помощью команды cd

cd C:\dotnet\winforms\helloapp

В данном случае мы для создания и запуска проекта мы будем использовать встроенную инфраструктуру .NET CLI, которая устанавливается вместе с .NET SDK.

Для создания проекта в .NET CLI применяется команда dotnet new, после которой указывается тип проWindows Formsекта. Для создания проекта
Windows Forms применяется шаблон — winforms. Поэтому введем в терминале команду dotnet new winforms

C:\Users\eugen>cd C:\dotnet\winforms\helloapp

C:\dotnet\winforms\helloapp>dotnet new winforms
Шаблон "Приложение Windows Forms" успешно создан.

Идет обработка действий после создания...
Восстановление C:\dotnet\winforms\helloapp\helloapp.csproj:
  Определение проектов для восстановления...
  Восстановлен C:\dotnet\winforms\helloapp\helloapp.csproj (за 1,04 sec).
Восстановление выполнено.



C:\dotnet\winforms\helloapp>

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

Структура проекта Windows Forms

Рассмотрим базовую структуру простейшего стандартного проекта Windows Forms:

  • helloapp.csproj: стандартный файл проекта C#, который соответствует назанию проекта (по умолчанию названию каталога) и описывает все его настройки.

  • helloapp.csproj.user: дополнительный файл проекта C#, который хранит специфичные для текущего пользователя настройки.

  • Form1.cs: содержит класс формы, которая по умолчанию запускается при старте приложения

  • Form1.Designer.cs: он содержит определение компонентов формы, добавленных
    на форму в графическом дизайнере (графический дизайнер Windows Forms на данный момент официально доступен только в Visual Studio)

  • Program.cs: определяет класс Program, который запускается при старте приложения и запускает форму Form1

Например, посмотрим на содержимое файла helloapp.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

</Project>

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

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

  • TargetFramework: определяет применяемую для компиляции версию фреймворка .NET. Поскольку при создании проекта
    была выбрана версия .NET 8, а сам проект зависит от компонентов Windows, то здесь должно быть значение net7.0-windows

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

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

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

Запуск проекта

Проект по умолчанию не представляет какой-то грандиозной функциональности, тем не менее этот проект мы уже можем запустить. Итак, запустим проект. Для этого выполним команду
dotnet run

C:\dotnet\winforms\helloapp>dotnet run

При запуске запускается графическая форма, код которой определяет класс Form1:

Первое приложение на Windows Forms на С# с .NET CLI

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

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

namespace helloapp;

static class Program
{
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());
    }    
}

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

ApplicationConfiguration.Initialize()

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

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

Application.Run(new Form1());

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

То есть, когда мы запустим приложение, сработает метод Main, в котором будет вызван метод Application.Run(new Form1()),
благодаря чему мы увидим форму Form1 на экране.

Определение формы

Теперь посмотрим на определение формы и немного изменим его. Для этого откроем файл Form1.cs в текстовом редакторе. По умолчанию он выглядит следующим образом:

namespace helloapp;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
}

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

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

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

Теперь изменим его код следующим образом:

namespace helloapp;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // определяем кнопку
        Button button = new Button();
        // текст кнопки
        button.Text ="Click";
        // положение кнопки
        button.Location = new Point(50, 50);
        // размер кнопки
        button.Size = new Size { Width = 80, Height = 30 };
        // обработчик нажатия кнопки
        button.Click += (o, e) => MessageBox.Show("Hello METANIT.COM!");
        // добавление кнопки на форму
        this.Controls.Add(button);
    }
}

В данном случае на форму добавляется кнопка, и у нее настраиваются различные свойства, как текст, положение на форме, размер, а также обработчик нажатия.
Заново запустим проект, и нам отобразится та же форма, которая теперь будет содержать кнопку. И по нажатию на кнопку появится маленькое окно с сообщением.

Первое приложение на Windows Forms на С#

From Wikipedia, the free encyclopedia

This article needs to be updated. Please help update this article to reflect recent events or newly available information. (January 2023)

Windows Forms (WinForms)

Other names WinForms
Original author(s) .NET: Microsoft,
Mono: Ximian/Novell
Developer(s) .NET Foundation
Initial release February 13, 2002; 23 years ago
Stable release

v8.0.0
/ November 14, 2023; 17 months ago[1]

Repository
  • github.com/dotnet/winforms
Written in C#
Operating system Microsoft Windows
Platform .NET Framework, .NET, Mono
Type Software framework, widget toolkit
License MIT License
Website learn.microsoft.com/en-us/dotnet/desktop/winforms/

Windows Forms, also known as WinForms, is a free, open-source graphical user interface (GUI) class library for building Windows desktop applications, included as a part of Microsoft .NET, .NET Framework or Mono,[2] providing a platform to write client applications for desktop, laptop, and tablet PCs.[3] While it is seen as a replacement for the earlier and more complex C++ based Microsoft Foundation Class Library, it does not offer a comparable paradigm[4] and only acts as a platform for the user interface tier in a multi-tier solution.[5]

At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing Windows Forms as an open source project on GitHub. It is released under the MIT License. With this release, Windows Forms has become available for projects targeting the .NET Core framework. However, the framework is still available only on the Windows platform, and Mono’s incomplete implementation of Windows Forms remains the only cross-platform implementation.[6][7]

This API is a part of .NET Framework 3.0

A Windows Forms application is an event-driven application supported by Microsoft’s .NET Framework. Unlike a batch program, it spends most of its time simply waiting for the user to do something, such as fill in a text box or click a button. The code for the application can be written in a .NET programming language such as C# or Visual Basic.

Windows Forms provides access to native Windows User Interface Common Controls by wrapping the existent Windows API in managed code.[8] With the help of Windows Forms, the .NET Framework provides a more comprehensive abstraction above the Win32 API than Visual Basic or MFC did.[9]

Windows Forms is similar to Microsoft Foundation Class (MFC) library in developing client applications. It provides a wrapper consisting of a set of C++ classes for development of Windows applications. However, it does not provide a default application framework like the MFC. Every control in a Windows Forms application is a concrete instance of a class.

All visual elements in the Windows Forms class library derive from the Control class. This provides the minimal functionality of a user interface element such as location, size, color, font, text, as well as common events like click and drag/drop. The Control class also has docking support to let a control rearrange its position under its parent. The Microsoft Active Accessibility support in the Control class also helps impaired users to use Windows Forms better.[10]

In Visual Studio, forms are created using drag-and-drop techniques. A tool is used to place controls (e.g., text boxes, buttons, etc.) on the form (window). Controls have attributes and event handlers associated with them. Default values are provided when the control is created, but may be changed by the programmer. Many attribute values can be modified during run time based on user actions or changes in the environment, providing a dynamic application. For example, code can be inserted into the form resize event handler to reposition a control so that it remains centered on the form, expands to fill up the form, etc. By inserting code into the event handler for a keypress in a text box, the program can automatically translate the case of the text being entered, or even prevent certain characters from being inserted.

Besides providing access to native Windows controls like button, textbox, checkbox and listview, Windows Forms added its own controls for ActiveX hosting, layout arrangement, validation and rich data binding. Those controls are rendered using GDI+.[10]

Just like Abstract Window Toolkit (AWT), the equivalent Java API, Windows Forms was an early and easy way to provide graphical user interface components to the .NET Framework. Windows Forms is built on the existing Windows API and some controls merely wrap underlying Windows components.[11] Some of the methods allow direct access to Win32 callbacks, which are not available in non-Windows platforms.[11]

In .NET Framework 2.0, Windows Forms gained richer layout controls, Office 2003 style toolstrip controls, multithreading component, richer design-time and data binding support as well as ClickOnce for web-based deployment.[12][13]

With the release of .NET Framework 3.0, Microsoft released a second, parallel API for rendering GUIs: Windows Presentation Foundation (WPF) based on DirectX,[14] together with a GUI declarative language called XAML.[15]

During a question-and-answer session at the Build 2014 Conference, Microsoft explained that Windows Forms was under maintenance mode, with no new features being added, but bugs found would still be fixed.[16] Most recently, improved high-DPI support for various Windows Forms controls was introduced in updates to .NET Framework version 4.5.[17]

XAML backwards compatibility with Windows Forms

[edit]

For future development, Microsoft has succeeded Windows Forms with a XAML-based GUI entry using frameworks such as WPF and UWP. However, drag and drop placement of GUI components in a manner similar to Windows Forms is still provided in XAML by replacing the root XAML element of the Page/Window with a «Canvas» UI-Control. When making this change, the user can build a window in a similar fashion as in Windows Forms by directly dragging and dropping components using the Visual Studio GUI.

While XAML provides drag and drop placement backwards compatibility through the Canvas Control, XAML Controls are only similar to Windows Forms Controls and are not one-to-one backwards compatible. They perform similar functions and have a similar appearance, but the properties and methods are different enough to require remapping from one API to another.

Alternative implementation

[edit]

Mono is a project led by Xamarin (formerly by Ximian, then Novell) to create an Ecma standard compliant .NET Framework compatible set of tools.

In 2011, Mono’s support for System.Windows.Forms as of .NET 2.0 was announced as complete;[18]
System.Windows.Forms 2.0 works natively on Mac OS X.[19]
However, System.Windows.Forms has not been actively developed on Mono.[20]
Full compatibility with .NET was not possible, because Microsoft’s System.Windows Forms is mainly a wrapper around the Windows API, and some of the methods allow direct access to Win32 callbacks, which are not available in platforms other than Windows.[11]
A more significant problem is that, since version 5.2,[21]
Mono has been upgraded so that its default is to assume a 64 bit platform.
However, System.Windows.Forms on Mono for the Macintosh OS X platform has been built using a 32 bit subsystem, Carbon.[22]
As of this date[when?], a 64-bit version of System.Windows.Forms for use on Mac OS X remains unavailable and only .NET applications built for the 32 bit platform can be expected to execute.

  • Microsoft Visual Studio
  • ClickOnce
  • Abstract Window Toolkit (AWT), the equivalent GUI application programming interface (API) for the Java programming language
  • Visual Component Library (VCL) from Borland
  • Visual Test, test automation
  1. ^ «v8.0.0». github.com. 2023-11-14. Retrieved 2023-11-21.
  2. ^ Sells, Chris (September 6, 2003). Windows Forms Programming in C# (1st ed.). Addison-Wesley Professional. p. xxxviiii.
  3. ^ «Design and Implementation Guidelines for Web Clients by Microsoft Pattern and Practices». Microsoft. November 2003.
  4. ^ Sells, Chris; Weinhardt, Michael (May 16, 2006). «Appendix B». Moving from MFC, Windows Forms 2.0 Programming (2nd ed.). Addison-Wesley Professional.
  5. ^ «Introduction to Windows Forms» (Visual Studio 2003 documentation). Microsoft 2003.
  6. ^ Martin, Jeff (4 December 2018). «Microsoft Open Sources WPF, WinForms, and WinUI». InfoQ. Retrieved 2018-12-06.
  7. ^ Hanselman, Scott (4 December 2018). «Announcing WPF, WinForms, and WinUI are going Open Source». Retrieved 2018-12-06.
  8. ^ De Smet, Bart (January 4, 2011). «Chapter 5». C# 4.0 Unleashed. Sams Publishing.
  9. ^ Griffiths, Ian; Adams, Matthew (March 2003). NET Windows Forms in a Nutshell. O’Reilly Media. p. 4.
  10. ^ a b Griffiths, Ian; Adams, Matthew (March 2003). NET Windows Forms in a Nutshell. O’Reilly Media. pp. 27–53.
  11. ^ a b c «FAQ: Winforms». mono-project.com. It is very unlikely that the implementation will ever implement everything needed for full compatibility with Windows.Forms. The reason is that Windows.Forms is not a complete toolkit, and to work around this problem some of the underlying Win32 foundation is exposed to the programmer in the form of exposing the Windows message handler
  12. ^ Sells, Chris; Weinhardt, Michael (May 16, 2006). «Appendix A. What s New in Windows Forms 2.0». Windows Forms 2.0 Programming (2nd ed.). Addison-Wesley Professional.
  13. ^ Noyes, Brian (January 12, 2006). «Preface». Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET (1st ed.). Addison-Wesley Professional. ISBN 978-81-317-4823-7.
  14. ^ Hall, Gary (December 27, 2010). «DirectX, not GDI+». Pro WPF and Silverlight MVVM: Effective Application Development with Model (2010 ed.). Apress. p. 2.
  15. ^ Smith, Josh (2007-09-05). «WPF vs. Windows Forms». Josh Smith on WPF. Retrieved 2011-08-25. WPF is not intended to replace Windows Forms. […] Windows Forms is still alive and well, and will continue to be enhanced and supported by Microsoft for years to come. WPF is simply another tool for Windows desktop application developers to use, when appropriate.
  16. ^ «A WPF Q&A». infoq.com. 2014-04-03. Retrieved 2014-04-21. Windows Forms is continuing to be supported, but in maintenance mode. They will fix bugs as they are discovered, but new functionality is off the table
  17. ^ Allen, Jonathan (2014-05-06). «High DPI Improvements for Windows Forms in .NET 4.5.2». InfoQ. Retrieved 2015-02-10.
  18. ^ «WinForms». mono-project.com. Retrieved 2011-07-30. Support for Windows Forms 2.0 is complete. At this point, we are largely just fixing bugs and polishing our code.
  19. ^ «WinForms». mono-project.com. Retrieved 2011-07-30. Does Winforms run on OSX? Yes, as of Mono 1.9, Winforms has a native OSX driver that it uses by default
  20. ^ de Icaza, Miguel (2011-03-07). «GDC 2011». Retrieved 2011-07-30. For tools that are mostly OpenGL/DirectX based, use Windows.Forms, keeping in mind that some bug fixing or work around on their part might be needed as our Windows.Forms is not actively developed.
  21. ^ «Introduction to Mono on macOS». mono-project.com. Retrieved 2019-11-12.
  22. ^ Martin, Jess. «Windows.Forms Comes to 64-bit Mac OS X». Retrieved 2019-11-12.
  • MSDN: Building Windows Forms applications
  • MSDN : Windows.Forms reference documentation
  • MSDN : Windows Forms Technical Articles — Automating Windows Form with Visual Test

Материал из Викиучебника — открытых книг для открытого мира

Содержание

  1. Python
    1. tkinter Стандратный модуль для создания приложений с GUI интерфейсом.
  2. VBA
    1. VBA GUI в среде MS Excel.
  3. HTML
    1. HTML book Обзор GUI в HTML.
  4. Pascal
    1. Windows Forms Интерфейс (API) для создания GUI-приложений.

Windows Forms — фреймворк для работы с формами.

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

{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
 
uses
  System.Windows.Forms,
  System.Drawing;
  
var
  MainForm: System.Windows.Forms.Form;

begin
  MainForm := new Form;
  Application.Run(MainForm);
end.

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

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

  1. System.Windows.Forms.Button или Button (кнопка)
  2. System.Windows.Forms.Label или Label (метка)
  3. System.Windows.Forms.CheckBox или CheckBox (флажок)
  4. System.Windows.Forms.RadioButton или RadioButton (радио-кнопка)
  5. System.Windows.Forms.TrackBar или TrackBar (ползунок)
  6. System.Windows.Forms.ListBox или ListBox (список)
  7. System.Windows.Forms.ComboBox или ComboBox (выпадающий список)
  8. System.Windows.Forms.Form или Form (форма)
  9. System.Windows.Forms.GroupBox или GroupBox (фрейм)
  10. System.Windows.Forms.SplitContainer или SplitContainer (элемент разделения окна)
  11. System.Windows.Forms.MenuStrip или MenuStrip (главное меню)
  12. System.Windows.Forms.ToolStripMenuItem или ToolStripMenuItem (подменю)

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

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

Свойство Значение
Width Ширина кнопки.
Height Высота кнопки.
Text Текст на кнопке.
BackColor Цвет фона кнопки.
ForeColor Цвет текста кнопки.
Location Позиция кнопки на форме.

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

AutoSize Будет ли меняться размер кнопки, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на кнопке.
Parent Родительский виджет.
Visible Видна ли кнопка.
Событие Значение
Click Хранит ссылку на процедуру, которая выполниться при нажатии на кнопку.

Для установки его значения используйте вместо := +=.

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

name — имя метки.

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

System.Windows.Forms.CheckBox — класс флажка. Синтаксис его создания:

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 — имя ползунка.

Свойство Значение
Width Ширина ползунка.
Height Ширина ползунка.
Location Позиция ползунка на форме.
Parent Родительский виджет.
Visible Виден ли ползунок.
Minimum Минимальное значение ползунка.
Maximum Максимальное значение ползунка.
Value Текущее значение ползунка.
Orientation Ориентация ползунка.

  • System.Windows.Forms.Orientation.Horizontal — горизонтальная
  • System.Windows.Forms.Orientation.Vertical — вертикальная
TickStyle Контролирует как отображаются деления.

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

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

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

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

Ниже a — список.

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

System.Windows.Forms.ComboBox — класс выпадающего списка. Для его создания пишите:

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 — имя кнопки.

Свойство Значение
Width Ширина фрейма.
Height Высота фрейма.
Text Текст на в заголовке фрейма.
Location Позиция фрейма на форме.

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

AutoSize Будет ли меняться размер фрейма, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на кнопке.
Parent Родительский виджет.
Visible Виден ли фрейм.

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

name := new SplitContainer();

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

Свойство Значение
Width Ширина элемента разделения окна.
Height Высота элемента разделения окна.
Location Позиция элемента разделения окна на форме.

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

AutoSize Будет ли меняться размер элемента разделения окна, подгоняясь под размер содержимого, или будет отображаться лишь та часть содержимого, умещающаяся на элементе разделения окна.
Visible Виден ли элемент разделения окна.
Orientation Ориентация элемента разделения окна.

  • System.Windows.Forms.Orientation.Horizontal — горизонтальная
  • System.Windows.Forms.Orientation.Vertical — вертикальная
Parent Родительский виджет.
Panel1 Имя виджета, входящего в левую или верхнюю часть элемента разделения окна.
Panel2 Имя виджета, входящего в правую или нижнюю часть элемента разделения окна.

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

name := new MenuStrip ();

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

Свойство Значение
BackColor Цвет фона главного меню.
ForeColor Цвет текста меню.
GripStyle Видим ли объект для перемещения меню, находящийся слева.

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

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

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

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

name := new ToolStripMenuItem ();

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

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

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

Процедура Значение
b.DropDownItems.Add(t,i,act) Добавляет пункт в подменю b.

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

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

Свойство Описане
Text Заголовок формы.

Ниже a — форма.

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

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

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

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

procedure p(sender:object; args:System.EventArgs);
begin
   //тело процедуры
end;

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

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

Application.EnableVisualStyles;
  • Вывод сообщения по нажатию кнопки:
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
  
uses System, System.Windows.Forms;
 
var
  f : Form;
  btn : Button;
 
procedure ButtonClick(sender: object; e: EventArgs);
begin
  MessageBox.Show('Hello world!');
end;    
 
begin
  f := new Form;
  btn := new Button;
  btn.Text := 'Click me';
  btn.Click += ButtonClick;
  f.Controls.Add(btn);
  Application.Run(f);
end.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как распечатать картинку на нескольких листах а4 на принтере windows 10
  • Как добавить иконку bluetooth в панель задач windows 10
  • Майнкрафт windows 10 текстур пак
  • How to delete onedrive from windows 10
  • Как самому подписать драйвер windows 10