stringtranslate.com

Формы Windows

Windows Forms ( WinForms ) — это бесплатная и открытая графическая (GUI) библиотека классов, входящая в состав Microsoft .NET , .NET Framework или Mono , [2] предоставляющая платформу для написания клиентских приложений для настольных компьютеров, ноутбуков и планшетных ПК. [3] Хотя она рассматривается как замена более ранней и более сложной Microsoft Foundation Class Library на основе C++ , она не предлагает сопоставимой парадигмы [4] и действует только как платформа для уровня пользовательского интерфейса в многоуровневом решении. [5]

На мероприятии Microsoft Connect 4 декабря 2018 года компания Microsoft объявила о выпуске Windows Forms как проекта с открытым исходным кодом на GitHub . Он выпущен под лицензией MIT . С этим выпуском Windows Forms стал доступен для проектов, ориентированных на фреймворк .NET Core . Однако фреймворк по-прежнему доступен только на платформе Windows, а неполная реализация Windows Forms в Mono остается единственной кроссплатформенной реализацией. [6] [7]

Архитектура

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

Приложение Windows Forms — это событийно-управляемое приложение , поддерживаемое .NET Framework от Microsoft . В отличие от пакетной программы , большую часть времени оно просто ждет, пока пользователь что-то сделает, например, заполнит текстовое поле или нажмет кнопку . Код для приложения может быть написан на языке программирования .NET, например C# или Visual Basic .

Windows Forms обеспечивает доступ к собственным общим элементам управления пользовательского интерфейса Windows , заключая существующий API Windows в управляемый код . [8] С помощью Windows Forms .NET Framework обеспечивает более полную абстракцию над API Win32, чем Visual Basic или MFC. [9]

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

Функции

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

В Visual Studio формы создаются с помощью методов перетаскивания . Для размещения элементов управления (например, текстовых полей, кнопок и т. д.) на форме (окне) используется инструмент. Элементы управления имеют атрибуты и обработчики событий , связанные с ними. Значения по умолчанию предоставляются при создании элемента управления, но могут быть изменены программистом. Многие значения атрибутов могут быть изменены во время выполнения на основе действий пользователя или изменений в среде, что обеспечивает динамическое приложение. Например, код может быть вставлен в обработчик событий изменения размера формы, чтобы изменить положение элемента управления так, чтобы он оставался по центру формы, расширялся для заполнения формы и т. д. Вставляя код в обработчик событий для нажатия клавиши в текстовом поле, программа может автоматически переводить регистр вводимого текста или даже предотвращать вставку определенных символов.

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

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

Как и Abstract Window Toolkit (AWT), эквивалентный Java API, Windows Forms был ранним и простым способом предоставления компонентов графического пользовательского интерфейса для .NET Framework . Windows Forms построен на существующем Windows API, а некоторые элементы управления просто обертывают базовые компоненты Windows. [11] Некоторые из методов позволяют напрямую обращаться к обратным вызовам Win32 , которые недоступны на платформах, отличных от Windows. [11]

В .NET Framework 2.0 Windows Forms получили более богатые элементы управления макетом, элементы управления в стиле Office 2003, многопоточный компонент, более богатую поддержку времени разработки и привязки данных, а также ClickOnce для веб-развертывания. [12] [13]

С выпуском .NET Framework 3.0 компания Microsoft выпустила второй, параллельный API для рендеринга графических интерфейсов: Windows Presentation Foundation (WPF) на основе DirectX [14] вместе с декларативным языком графического интерфейса под названием XAML [15] .

Во время сессии вопросов и ответов на конференции Build 2014 компания Microsoft объяснила, что Windows Forms находится в режиме обслуживания, и новые функции не добавляются, но найденные ошибки будут исправлены. [16] Совсем недавно в обновлениях .NET Framework версии 4.5 была представлена ​​улучшенная поддержка высокого разрешения для различных элементов управления Windows Forms. [17]

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

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

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

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

Mono — это проект под руководством Xamarin (ранее Ximian , затем Novell ) по созданию набора инструментов, совместимого со стандартом Ecma и .NET Framework .

В 2011 году поддержка Mono для System.Windows.Forms в .NET 2.0 была объявлена ​​полной; [18] System.Windows.Forms 2.0 изначально работает в Mac OS X. [19] Однако System.Windows.Forms не разрабатывалась активно в Mono. [20] Полная совместимость с .NET была невозможна, поскольку System.Windows Forms от Microsoft в основном является оболочкой вокруг Windows API , а некоторые методы обеспечивают прямой доступ к обратным вызовам Win32 , которые недоступны на платформах, отличных от Windows. [11] Более существенной проблемой является то, что, начиная с версии 5.2, [21] Mono был обновлен таким образом, что по умолчанию предполагается 64-разрядная платформа. Однако System.Windows.Forms в Mono для платформы Macintosh OS X была создана с использованием 32-разрядной подсистемы Carbon . [22] На данный момент [ когда? ] 64-разрядная версия System.Windows.Forms для использования в Mac OS X остается недоступной, и можно ожидать выполнения только приложений .NET, созданных для 32-разрядной платформы.

Смотрите также

Ссылки

  1. ^ "v8.0.0". github.com . 2023-11-14 . Получено 2023-11-21 .
  2. Селлс, Крис (6 сентября 2003 г.). Программирование Windows Forms на языке C# (1-е изд.). Addison-Wesley Professional. стр. xxxviii.
  3. ^ «Руководство по проектированию и реализации веб-клиентов от Microsoft Pattern and Practices». Microsoft. Ноябрь 2003 г.
  4. ^ Селлс, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение B». Переход от MFC, программирование Windows Forms 2.0 (2-е изд.). Addison-Wesley Professional.
  5. ^ «Введение в Windows Forms» (документация Visual Studio 2003). Microsoft 2003.
  6. ^ Мартин, Джефф (4 декабря 2018 г.). «Microsoft Open Sources WPF, WinForms и WinUI». InfoQ . Получено 06.12.2018 .
  7. ^ Хансельман, Скотт (4 декабря 2018 г.). «Объявление о том, что WPF, WinForms и WinUI переходят на Open Source» . Получено 06.12.2018 .
  8. ^ Де Смет, Барт (4 января 2011 г.). "Глава 5". C# 4.0 Unleashed. Sams Publishing.
  9. ^ Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms in a Nutshell . O'Reilly Media. стр. 4.
  10. ^ ab Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms in a Nutshell . O'Reilly Media. стр. 27–53.
  11. ^ abc "FAQ: Winforms". mono-project.com. Маловероятно, что реализация когда-либо реализует все необходимое для полной совместимости с Windows.Forms. Причина в том, что Windows.Forms не является полным набором инструментов, и для решения этой проблемы часть базовой основы Win32 предоставляется программисту в форме предоставления обработчика сообщений Windows
  12. ^ Селлс, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение A. Что нового в Windows Forms 2.0». Программирование Windows Forms 2.0 (2-е изд.). Addison-Wesley Professional.
  13. ^ Нойес, Брайан (12 января 2006 г.). «Предисловие». Связывание данных с Windows Forms 2.0: Программирование интеллектуальных клиентских приложений данных с помощью .NET (1-е изд.). Addison-Wesley Professional. ISBN 978-81-317-4823-7.
  14. ^ Холл, Гэри (27 декабря 2010 г.). «DirectX, а не GDI+». Pro WPF и Silverlight MVVM: эффективная разработка приложений с использованием модели (ред. 2010 г.). Apress. стр. 2.
  15. ^ Смит, Джош (2007-09-05). "WPF против Windows Forms". Джош Смит о WPF . Получено 2011-08-25 . WPF не предназначен для замены Windows Forms. [...] Windows Forms все еще живы и здоровы, и будут продолжать совершенствоваться и поддерживаться Microsoft в течение многих лет. WPF — это просто еще один инструмент для разработчиков настольных приложений Windows, который можно использовать при необходимости.
  16. ^ "WPF Q&A". infoq.com. 2014-04-03 . Получено 2014-04-21 . Windows Forms продолжает поддерживаться, но в режиме обслуживания. Они будут исправлять ошибки по мере их обнаружения, но новые функции не рассматриваются
  17. ^ Аллен, Джонатан (2014-05-06). "Улучшения высокого DPI для Windows Forms в .NET 4.5.2". InfoQ . Получено 2015-02-10 .
  18. ^ "WinForms". mono-project.com . Получено 2011-07-30 . Поддержка Windows Forms 2.0 завершена. На данном этапе мы в основном просто исправляем ошибки и полируем наш код.
  19. ^ "WinForms". mono-project.com . Получено 2011-07-30 . Работает ли Winforms на OSX? Да, начиная с Mono 1.9, Winforms имеет собственный драйвер OSX, который он использует по умолчанию
  20. ^ de Icaza, Miguel (2011-03-07). "GDC 2011" . Получено 2011-07-30 . Для инструментов, которые в основном основаны на OpenGL/DirectX, используйте Windows.Forms, имея в виду, что может потребоваться исправление некоторых ошибок или обходные пути с их стороны, поскольку наш Windows.Forms не разрабатывается активно.
  21. ^ "Введение в Mono на macOS". mono-project.com . Получено 12.11.2019 .
  22. ^ Мартин, Джесс. "Windows.Forms приходит в 64-битную Mac OS X" . Получено 12 ноября 2019 г.

Внешние ссылки