- Введение в Windows Forms
- Создание графического приложения
- Запуск приложения
- Windows Forms
- Содержание
- История и развитие
- Архитектура
- Альтернативные реализации
- См. также
- Примечания
- Ссылки
- Windows Forms — Windows Forms
- СОДЕРЖАНИЕ
- Архитектура
- Функции
- История и будущее
- Обратная совместимость XAML с Windows Forms
- Альтернативная реализация
Введение в Windows Forms
Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии — Window Forms, WPF, приложения для магазина Windows Store (для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих пор остается Window Forms или формы. Данное руководство ставит своей целью дать понимание принципов создания графических интерфейсов с помощью технологии WinForms и работы основных элементов управления.
Создание графического приложения
Для создания графического проекта нам потребуется среда разработки Visual Studio. Поскольку наиболее распространенная пока версия Visual Studio 2013, то для данного руководства я буду использовать бесплатную версию данной среды Visual Studio Community 2013 которую можно найти на странице https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx.
После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. Для этого в меню выберем пункт File (Файл) и в подменю выберем New — > Project (Создать — > Проект). После этого перед нами откроется диалоговое окно создания нового проекта:
В левой колонке выберем Windows Desktop , а в центральной части среди типов проектов — тип Windows Forms Application и дадим ему какое-нибудь имя в поле внизу. Например, назовем его HelloApp. После этого нажимаем OK.
После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:
Большую часть пространства Visual Studio занимает графический дизайнер, который содержит форму будущего приложения. Пока она пуста и имеет только заголовок Form1. Справа находится окно файлов решения/проекта — Solution Explorer (Обозреватель решений). Там и находятся все связанные с нашим приложением файлы, в том числе файлы формы Form1.cs.
Внизу справа находится окно свойств — Properties. Так как у меня в данный момент выбрана форма как элемент управления, то в этом поле отображаются свойства, связанные с формой.
Теперь найдем в этом окне свойство формы Text и изменим его значение на любое другое:
Таким образом мы поменяли заголовок формы. Теперь перенесем на поле какой-нибудь элемент управления, например, кнопку. Для этого найдем в левой части Visual Studio вкладку Toolbox (Панель инструментов) . Нажмем на эту вкладку, и у нас откроется панель с элементами, откуда мы можем с помощью мыши перенести на форму любой элемент:
Найдем среди элементов кнопку и, захватив ее указателем мыши, перенесем на форму:
Это визуальная часть. Теперь приступим к самому программированию. Добавим простейший код на языке C#, который бы выводил сообщение по нажатию кнопки. Для этого мы должны перейти в файл кода, который связан с этой формой. Если у нас не открыт файл кода, мы можем нажать на форму правой кнопкой мыши и в появившемся меню выбрать View Code (Посмотреть файл кода):
Однако воспользуемся другим способом, чтобы не писать много лишнего кода. Наведем указатель мыши на кнопку и щелкнем по ней двойным щелчком. Мы автоматически попадаем в файл кода Form1.cs, который выглядит так:
Добавим вывод сообщения по нажатию кнопки, изменив код следующим образом:
Запуск приложения
Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio. После этого запустится наша форма с одинокой кнопкой. И если мы нажмем на кнопку на форме, то нам будет отображено сообщение с приветствием.
После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог bin/Debug или bin/Release
Рассмотрев вкратце создание проекта графического приложения, мы можем перейти к обзору основных компонентов и начнем мы с форм.
Windows Forms
Windows Forms — название интерфейса программирования приложений (API), отвечающего за графический интерфейс пользователя и являющегося частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обертки для существующего Win32 API в управляемом коде. Причем управляемый код — классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.
С одной стороны Windows Forms рассматривается как замена более старой и сложной библиотеке MFC, изначально написанной на языке C++, но с другой стороны, WF не предлагает парадигму, сравнимую с MVC. Для исправления этой ситуации и реализации данного функционала в WF существуют сторонние библиотеки. Одной из наиболее используемых подобных библиотек является User Interface Process Application Block, выпущенная специальной группой Microsoft, занимающейся примерами и рекомендациями, для бесплатного скачивания. Эта библиотека также содержит исходный код и обучающие примеры для ускорения обучения.
Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms .
Содержание
История и развитие
Как и Abstract Window Toolkit (AWT) (схожий API для языка Java) библиотека Windows Forms была разработана как часть .NET Framework для упрощения разработки компонентов графического интерфейса пользователя. Windows Forms построена на основе устаревающего Windows API и представляет собой по сути обертку нижележащих компонентов Windows.
Windows Forms предоставляет возможность разработки кроссплатформенного графического пользовательского интерфейса. С выходом .NET Framework 3.0 (в составе Windows Vista) Windows Forms была заменена каркасом Windows Presentation Foundation (и его языком описания ГПИ XAML). Поскольку WPF является относительно новой разработкой, то пока что неизвестно, будет ли продолжено развитие Windows Forms в будущих выпусках .NET. [1] [2] [3]
Архитектура
Приложение Windows Forms представляет собой событийно-ориентированное приложение, поддерживаемое Microsoft .NET Framework. В отличие от пакетных программ большая часть времени тратится на ожидание от пользователя каких-либо действий, как например, ввод текста в текстовое поле или клика мышкой по кнопке.
Альтернативные реализации
Mono — проект, финансируемый Novell (ранее — Ximian), одна из задач которого — создать стандарт Ecma, совместимый с набором инструментов .NET.
13 мая 2008 года API Mono System.Windows.Forms 2.0 была завершена (содержала 100% классов, методов и т.д. из Microsoft System.Windows.Forms 2.0); также System.Windows.Forms 2.0 естественым образом работает и на Mac OS X.
См. также
- Microsoft Visual Studio
- ClickOnce
- Abstract Window Toolkit
- Visual Component Library, Borland VCL
- Visual Test, инструмент автоматизации тестирования ГПИ
Примечания
- ↑Smith, JoshWPF vs. Windows Forms (5 сентября 2007). Архивировано из первоисточника 8 февраля 2012.Проверено 26 июля 2008.
- ↑Harsh, MikeWPF vs. Windows Forms (20 сентября 2004). — «If you’re targeting only Windows XP and Longhorn, Avalon is the way to go. But Windows Forms is still the only way to write managed UI that will run on Win 2K and below» Архивировано из первоисточника 8 февраля 2012.Проверено 26 июля 2008.
- ↑Chand, MaheshFuture of Windows Forms and ASP.NET (8 мая 2008). Архивировано из первоисточника 8 февраля 2012.Проверено 26 июля 2008.
Ссылки
- MSDN: Building Windows Forms applications (англ.)
- MSDN : Windows.Forms reference documentation (англ.)
- MSDN : Windows Forms Technical Articles — Automating Windows Form with Visual Test (англ.)
- Official community site (англ.)
- Jeff Prosise: «Windows Forms: Современная модель программирования для создания GUI приложений» (рус.)
Архитектура | Base Class Library • Common Language Infrastructure • .NET assembly • метаданные • COM Interop |
---|---|
Инфраструктура | Common Language Runtime • Common Type System • Common Intermediate Language • Virtual Execution System • Dynamic Language Runtime |
Языки Microsoft | C# • Cω • Visual Basic .NET • C++/CLI (Managed) • Visual J# • JScript .NET • Windows PowerShell • IronPython • IronRuby • F# • Spec# • Sing# |
Другие языки | A# • Boo • IronLisp • L# • Nemerle • P# • PascalABC.NET • PHP • Scala • Cobra • Delphi Prism |
Windows Foundations | Presentation • Communication • Workflow |
Компоненты | ADO.NET (Entity Framework · Data Services) · ASP.NET (AJAX · MVC · Dynamic Data) · .NET Remoting · Language Integrated Query · Windows CardSpace · Windows Forms · XAML · ClickOnce · Dynamic Language Runtime · Parallel FX Library (PLINQ · TPL) |
Реализации | DotGNU • Mono • .NET Compact Framework (Xbox 360) • .NET Micro Framework • Portable.NET • XNA Framework • Silverlight • Shared Source Common Language Infrastructure |
Сравнения | C# и Java • C# и Visual Basic .NET |
Будущие технологии | Acropolis • Jasper |
Низко- уровневые |
---|
Другие имена | WinForms |
---|---|
Оригинальный автор (ы) | .NET : Microsoft , Mono : Ximian / Novell |
Разработчики) | .NET Foundation |
изначальный выпуск | 13 февраля 2002 г . ; 19 лет назад ( 2002-02-13 ) |
Стабильный выпуск | |
Написано в | C # |
Операционная система | Майкрософт Виндоус |
Платформа | .NET Framework , .NET Core |
Тип | Программный фреймворк |
Лицензия | Лицензия MIT |
Интернет сайт | документы .microsoft .com / en-us / dotnet / framework / winforms / |
Windows Forms (WinForms) — это бесплатная библиотека классов с графическим интерфейсом (GUI) с открытым исходным кодом, входящая в состав Microsoft .NET Framework или Mono Framework , предоставляющая платформу для написания многофункциональных клиентских приложений для настольных, портативных и планшетных ПК. Хотя он рассматривается как замена более ранней и более сложной библиотеки классов Microsoft Foundation на основе C ++ , он не предлагает сопоставимой парадигмы и действует только как платформа для уровня пользовательского интерфейса в многоуровневом решении.
На мероприятии Microsoft Connect 4 декабря 2018 года Microsoft объявила о выпуске Windows Forms в качестве проекта с открытым исходным кодом на GitHub . Он выпущен под лицензией MIT . В этом выпуске Windows Forms стала доступна для проектов, ориентированных на платформу .NET Core . Однако фреймворк по-прежнему доступен только на платформе Windows, а неполная реализация Windows Forms в Mono остается единственной кроссплатформенной реализацией.
СОДЕРЖАНИЕ
Архитектура
Приложение Windows Forms является применением управляемых событий при поддержке компании Microsoft .NET Framework . В отличие от пакетной программы , она проводит большую часть своего времени, просто ожидая, пока пользователь что-то сделает, например, заполнит текстовое поле или нажмет кнопку .
Windows Forms обеспечивает доступ к собственным общим элементам управления пользовательского интерфейса Windows , заключая существующий Windows API в управляемый код . С помощью Windows Forms .NET Framework предоставляет более полную абстракцию над Win32 API, чем Visual Basic или MFC.
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 +.
История и будущее
Так же, как Abstract Window Toolkit (AWT), эквивалентный Java API, Windows Forms был ранним и простым способом предоставить компоненты графического пользовательского интерфейса для .NET Framework . Windows Forms построена на существующем Windows API, и некоторые элементы управления просто обертывают базовые компоненты Windows. Некоторые из методов обеспечивают прямой доступ к обратным вызовам Win32 , которые недоступны на платформах, отличных от Windows.
В .NET Framework 2.0 в Windows Forms появились более богатые элементы управления макетом, элементы управления на панели инструментов в стиле Office 2003, компонент многопоточности, расширенная поддержка времени разработки и привязки данных, а также ClickOnce для развертывания через Интернет.
С выпуском .NET 3.0 Microsoft выпустила второй параллельный API для рендеринга графических интерфейсов: Windows Presentation Foundation (WPF) на основе DirectX вместе с декларативным языком графического интерфейса пользователя под названием XAML .
Во время сеанса вопросов и ответов на конференции Build 2014 Microsoft объяснила, что Windows Forms находится в режиме обслуживания, без добавления новых функций, но найденные ошибки все равно будут исправлены. Совсем недавно улучшенная поддержка высокого разрешения для различных элементов управления Windows Forms была представлена в обновлениях .NET Framework версии 4.5.
Обратная совместимость XAML с Windows Forms
Для будущего развития Microsoft заменила Windows Forms с помощью записи графического интерфейса на основе XAML с использованием таких платформ, как WPF и UWP . Однако размещение компонентов графического интерфейса с помощью перетаскивания аналогично Windows Forms по-прежнему обеспечивается в XAML путем замены корневого элемента XAML страницы / окна на элемент управления пользовательского интерфейса «Canvas». При внесении этого изменения пользователь может создать окно аналогично Windows Forms, напрямую перетаскивая компоненты с помощью графического интерфейса Visual Studio.
В то время как XAML обеспечивает обратную совместимость размещения перетаскиванием через элемент управления Canvas, элементы управления XAML похожи только на элементы управления Windows Forms и не являются взаимно однозначно обратно совместимыми. Они выполняют аналогичные функции и имеют похожий внешний вид, но свойства и методы достаточно разные, чтобы потребовать переназначения одного API на другой.
Альтернативная реализация
Mono — это проект под руководством Xamarin (ранее Ximian , затем Novell ) по созданию совместимого со стандартом Ecma набора инструментов .NET .