Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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]

Архитектура [ править ]

Этот API является частью .NET Framework 3.0.

Приложение 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
  • Визуальный тест , автоматизация тестирования

Ссылки [ править ]

  1. Sells, Крис (6 сентября 2003 г.). Программирование Windows Forms на C # (1-е изд.). Эддисон-Уэсли Профессионал. п. xxxviiii.
  2. ^ «Рекомендации по проектированию и внедрению для веб-клиентов по шаблонам и методам Microsoft» . Microsoft. Ноябрь 2003 г.
  3. ^ Продает, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение Б». Переход от MFC, Программирование Windows Forms 2.0 (2-е изд.). Эддисон-Уэсли Профессионал.
  4. ^ «Введение в Windows Forms» (документация по Visual Studio 2003). Microsoft 2003.
  5. ^ Мартин, Джефф (4 декабря 2018 г.). «Microsoft Open Sources WPF, WinForms и WinUI» . InfoQ . Проверено 6 декабря 2018 .
  6. ^ Hanselman, Скотт (4 декабря 2018). «Объявление о переходе на открытый исходный код WPF, WinForms и WinUI» . Проверено 6 декабря 2018 .
  7. Де Смет, Барт (4 января 2011 г.). «Глава 5». C # 4.0 Unleashed . Самс Паблишинг.
  8. ^ Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . O'Reilly Media. п. 4.
  9. ^ а б Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . O'Reilly Media. С. 27–53.
  10. ^ a b c "FAQ: Winforms" . mono-project.com. Маловероятно, что в реализации когда-либо будет реализовано все необходимое для полной совместимости с Windows.Forms. Причина в том, что Windows.Forms не является полным набором инструментов, и для решения этой проблемы программисту предоставляется доступ к некоторым базовым основам Win32 в форме предоставления обработчика сообщений Windows.
  11. ^ Продает, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение A. Что нового в Windows Forms 2.0». Программирование Windows Forms 2.0 (2-е изд.). Эддисон-Уэсли Профессионал.
  12. Нойес, Брайан (12 января 2006 г.). "Предисловие". Связывание данных с Windows Forms 2.0: Программирование приложений данных Smart Client с помощью .NET (1-е изд.). Эддисон-Уэсли Профессионал.
  13. Холл, Гэри (27 декабря 2010 г.). «DirectX, а не GDI +». Pro WPF и Silverlight MVVM: эффективная разработка приложений с помощью модели (ред. 2010 г.). Апресс. п. 2.
  14. ^ Смит, Джош (2007-09-05). «WPF против Windows Forms» . Джош Смит о WPF . Проверено 25 августа 2011 . WPF не предназначен для замены Windows Forms. [...] Windows Forms все еще жива и здорова, и в ближайшие годы Microsoft продолжит совершенствовать и поддерживать ее. WPF - это просто еще один инструмент, который разработчики настольных приложений Windows могут использовать при необходимости.
  15. ^ «WPF Q&A» . infoq.com. 2014-04-03 . Проверено 21 апреля 2014 . Windows Forms продолжает поддерживаться, но в режиме обслуживания. Они будут исправлять ошибки по мере их обнаружения, но новые функции отсутствуют.
  16. ^ Аллен, Джонатан (2014-05-06). «Улучшения высокого разрешения для Windows Forms в .NET 4.5.2» . InfoQ . Проверено 10 февраля 2015 .
  17. ^ "WinForms" . mono-project.com . Проверено 30 июля 2011 . Поддержка Windows Forms 2.0 завершена. На данный момент мы в основном просто исправляем ошибки и полируем наш код.
  18. ^ "WinForms" . mono-project.com . Проверено 30 июля 2011 . Работает ли Winforms на OSX? Да, начиная с Mono 1.9, Winforms имеет собственный драйвер OSX, который он использует по умолчанию.
  19. ^ де Икаса, Мигель (2011-03-07). «GDC 2011» . Проверено 30 июля 2011 . Для инструментов, которые в основном основаны на OpenGL / DirectX, используйте Windows.Forms, помня, что с их стороны может потребоваться исправление ошибок или обходные пути, поскольку наши Windows.Forms активно не разрабатываются.
  20. ^ «Введение в Mono на macOS» . mono-project.com . Проверено 12 ноября 2019 .
  21. ^ Мартин, Джесс. «Windows.Forms приходит в 64-битную Mac OS X» . Проверено 12 ноября 2019 .

Внешние ссылки [ править ]

  • MSDN: Создание приложений Windows Forms
  • MSDN: справочная документация по Windows.Forms
  • MSDN: Технические статьи Windows Forms - Автоматизация Windows Form с помощью визуального тестирования