Автор (ы) оригинала | .NET : Microsoft , Mono : Ximian / Novell |
---|---|
Разработчики) | .NET Foundation |
изначальный выпуск | 13 февраля 2002 г . |
Стабильный выпуск | v5.0.0-rtm.20520.1 / 20 октября 2020 г . |
Репозиторий | |
Написано в | C # |
Операционная система | Майкрософт Виндоус |
Платформа | .NET Framework , .NET Core |
Тип | Программный фреймворк |
Лицензия | Лицензия MIT |
Интернет сайт | документы |
Windows Forms (WinForms) является свободным и открытым исходным кодом графический (GUI) библиотеки классов включены как часть Microsoft .NET Framework или Mono Framework , [1] представляет платформу для записи насыщенных клиентских приложений для настольных, портативных компьютеров и планшетных ПК . [2] Хотя он рассматривается как замена более ранней и более сложной библиотеки классов Microsoft Foundation на основе C ++ , он не предлагает сопоставимой парадигмы [3] и действует только как платформа для уровня пользовательского интерфейса в многоуровневом решении. . [4]
На мероприятии Microsoft Connect 4 декабря 2018 года Microsoft объявила о выпуске Windows Forms в качестве проекта с открытым исходным кодом на GitHub . Он выпущен под лицензией MIT . В этом выпуске Windows Forms стала доступна для проектов, ориентированных на платформу .NET Core . Однако фреймворк по-прежнему доступен только на платформе Windows, а неполная реализация Windows Forms в Mono остается единственной кроссплатформенной реализацией. [5] [6]
Архитектура [ править ]
Приложение Windows Forms является применением управляемых событий при поддержке компании Microsoft .NET Framework . В отличие от пакетной программы , она тратит большую часть своего времени, просто ожидая, пока пользователь что-то сделает, например, заполнит текстовое поле или нажмет кнопку .
Windows Forms обеспечивает доступ к собственным общим элементам управления пользовательского интерфейса Windows , заключая существующий Windows API в управляемый код . [7] С помощью Windows Forms .NET Framework предоставляет более полную абстракцию над Win32 API, чем Visual Basic или MFC. [8]
Windows Forms похожа на библиотеку Microsoft Foundation Class (MFC) при разработке клиентских приложений. Он предоставляет оболочку, состоящую из набора классов C ++ для разработки приложений Windows. Однако он не предоставляет платформу приложений по умолчанию, такую как MFC. Каждый элемент управления в приложении Windows Forms - это конкретный экземпляр класса.
Особенности [ править ]
Все визуальные элементы в библиотеке классов Windows Forms являются производными от класса Control. Это обеспечивает минимальную функциональность элемента пользовательского интерфейса, такую как расположение, размер, цвет, шрифт, текст, а также общие события, такие как щелчок и перетаскивание. Класс Control также имеет поддержку закрепления, позволяющую элементу управления переупорядочивать свое положение под своим родительским элементом. Поддержка Microsoft Active Accessibility в классе Control также помогает ослабленным пользователям лучше использовать Windows Forms. [9]
Помимо предоставления доступа к собственным элементам управления Windows, таким как кнопка, текстовое поле, флажок и список, Windows Forms добавила собственные элементы управления для размещения ActiveX , компоновки, проверки и привязки данных. Эти элементы управления отображаются с использованием GDI +. [9]
История и будущее [ править ]
Так же, как Abstract Window Toolkit (AWT), эквивалентный Java API, Windows Forms был ранним и простым способом предоставить компоненты графического пользовательского интерфейса для .NET Framework . Windows Forms построена на существующем Windows API, и некоторые элементы управления просто обертывают базовые компоненты Windows. [10] Некоторые методы обеспечивают прямой доступ к обратным вызовам Win32 , которые недоступны на платформах, отличных от Windows. [10]
В .NET Framework 2.0 в Windows Forms появились более богатые элементы управления макетом, элементы управления на панели инструментов в стиле Office 2003, компонент многопоточности, расширенная поддержка времени разработки и привязки данных, а также ClickOnce для развертывания через Интернет. [11] [12]
С выпуском .NET 3.0 Microsoft выпустила второй параллельный API для рендеринга графических интерфейсов пользователя: Windows Presentation Foundation (WPF) на основе DirectX [13] вместе с декларативным языком графического интерфейса пользователя под названием XAML . [14]
Во время сессии вопросов и ответов на конференции Build 2014 Microsoft объяснила, что Windows Forms находится в режиме обслуживания, без добавления новых функций, но найденные ошибки все равно будут исправлены. [15] Совсем недавно улучшенная поддержка высокого разрешения для различных элементов управления Windows Forms была представлена в обновлениях .NET Framework версии 4.5. [16]
Обратная совместимость 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 .
В 2011 году было объявлено, что поддержка Mono для System.Windows.Forms в .NET 2.0 завершена; [17] System.Windows.Forms 2.0 изначально работает в Mac OS X. [18] Однако System.Windows.Forms активно не разрабатывалась для Mono. [19] Полная совместимость с .NET была невозможна, потому что Microsoft System.Windows Forms в основном является оболочкой для Windows API , а некоторые методы позволяют прямой доступ к обратным вызовам Win32 , которые недоступны на платформах, отличных от Windows. [10] Более серьезная проблема заключается в том, что, начиная с версии 5.2, [20]Mono был обновлен, поэтому по умолчанию предполагается использование 64-битной платформы. Однако System.Windows.Forms на Mono для платформы Macintosh OS X был построен с использованием 32-битной подсистемы Carbon . [21] По состоянию на эту дату [ когда? ] , 64-разрядная версия System.Windows.Forms для использования в Mac OS X остается недоступной, и можно ожидать, что будут выполняться только приложения .NET, созданные для 32-разрядной платформы.
См. Также [ править ]
- Microsoft Visual Studio
- ClickOnce
- Abstract Window Toolkit (AWT), эквивалентный графический интерфейс прикладного программирования (API) для языка программирования Java.
- Библиотека визуальных компонентов (VCL) от Borland
- Визуальный тест , автоматизация тестирования
Ссылки [ править ]
- ↑ Sells, Крис (6 сентября 2003 г.). Программирование Windows Forms на C # (1-е изд.). Эддисон-Уэсли Профессионал. п. xxxviiii.
- ^ «Рекомендации по проектированию и внедрению для веб-клиентов по шаблонам и методам Microsoft» . Microsoft. Ноябрь 2003 г.
- ^ Продает, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение Б». Переход от MFC, Программирование Windows Forms 2.0 (2-е изд.). Эддисон-Уэсли Профессионал.
- ^ «Введение в Windows Forms» (документация по Visual Studio 2003). Microsoft 2003.
- ^ Мартин, Джефф (4 декабря 2018 г.). «Microsoft Open Sources WPF, WinForms и WinUI» . InfoQ . Проверено 6 декабря 2018 .
- ^ Hanselman, Скотт (4 декабря 2018). «Объявление о переходе на открытый исходный код WPF, WinForms и WinUI» . Проверено 6 декабря 2018 .
- ↑ Де Смет, Барт (4 января 2011 г.). «Глава 5». C # 4.0 Unleashed . Самс Паблишинг.
- ^ Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . O'Reilly Media. п. 4.
- ^ а б Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . O'Reilly Media. С. 27–53.
- ^ a b c "FAQ: Winforms" . mono-project.com.
Маловероятно, что в реализации когда-либо будет реализовано все необходимое для полной совместимости с Windows.Forms.
Причина в том, что Windows.Forms не является полным набором инструментов, и для решения этой проблемы программисту предоставляется доступ к некоторым базовым основам Win32 в форме предоставления обработчика сообщений Windows.
- ^ Продает, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение A. Что нового в Windows Forms 2.0». Программирование Windows Forms 2.0 (2-е изд.). Эддисон-Уэсли Профессионал.
- ↑ Нойес, Брайан (12 января 2006 г.). "Предисловие". Связывание данных с Windows Forms 2.0: Программирование приложений данных Smart Client с помощью .NET (1-е изд.). Эддисон-Уэсли Профессионал.
- ↑ Холл, Гэри (27 декабря 2010 г.). «DirectX, а не GDI +». Pro WPF и Silverlight MVVM: эффективная разработка приложений с помощью модели (ред. 2010 г.). Апресс. п. 2.
- ^ Смит, Джош (2007-09-05). «WPF против Windows Forms» . Джош Смит о WPF . Проверено 25 августа 2011 .
WPF не предназначен для замены Windows Forms.
[...] Windows Forms все еще жива и здорова, и в ближайшие годы Microsoft продолжит совершенствовать и поддерживать ее.
WPF - это просто еще один инструмент, который разработчики настольных приложений Windows могут использовать при необходимости.
- ^ «WPF Q&A» . infoq.com. 2014-04-03 . Проверено 21 апреля 2014 .
Windows Forms продолжает поддерживаться, но в режиме обслуживания.
Они будут исправлять ошибки по мере их обнаружения, но новые функции отсутствуют.
- ^ Аллен, Джонатан (2014-05-06). «Улучшения высокого разрешения для Windows Forms в .NET 4.5.2» . InfoQ . Проверено 10 февраля 2015 .
- ^ "WinForms" . mono-project.com . Проверено 30 июля 2011 .
Поддержка Windows Forms 2.0 завершена.
На данный момент мы в основном просто исправляем ошибки и полируем наш код.
- ^ "WinForms" . mono-project.com . Проверено 30 июля 2011 .
Работает ли Winforms на OSX?
Да, начиная с Mono 1.9, Winforms имеет собственный драйвер OSX, который он использует по умолчанию.
- ^ де Икаса, Мигель (2011-03-07). «GDC 2011» . Проверено 30 июля 2011 .
Для инструментов, которые в основном основаны на OpenGL / DirectX, используйте Windows.Forms, помня, что с их стороны может потребоваться исправление ошибок или обходные пути, поскольку наши Windows.Forms активно не разрабатываются.
- ^ «Введение в Mono на macOS» . mono-project.com . Проверено 12 ноября 2019 .
- ^ Мартин, Джесс. «Windows.Forms приходит в 64-битную Mac OS X» . Проверено 12 ноября 2019 .
Внешние ссылки [ править ]
- MSDN: Создание приложений Windows Forms
- MSDN: справочная документация по Windows.Forms
- MSDN: Технические статьи Windows Forms - Автоматизация Windows Form с помощью визуального тестирования