Формы Windows
Эту статью необходимо обновить . ( январь 2023 г. ) |
Другие имена | WinForms |
---|---|
Оригинальный автор(ы) | .NET : Microsoft , Моно : Симиан / Novell |
Разработчик(и) | Фонд .NET |
Первоначальный выпуск | 13 февраля 2002 г |
Стабильная версия | v8.0.0 / 14 ноября 2023 г [1] |
Репозиторий | |
Написано в | С# |
Операционная система | Microsoft Windows |
Платформа | .NET Framework , .NET , моно |
Тип | Программная среда , набор инструментов для виджетов |
Лицензия | МОЯ лицензия |
Веб-сайт | учиться |
Windows Forms ( WinForms ) — это с открытым исходным кодом бесплатная библиотека графических (GUI) классов , входящая в состав Microsoft .NET , .NET Framework или Mono . [2] предоставление платформы для написания клиентских приложений для настольных компьютеров, ноутбуков и планшетов. [3] Хотя она рассматривается как замена более ранней и более сложной C++ на базе библиотеки классов Microsoft Foundation , она не предлагает сопоставимой парадигмы. [4] и действует только как платформа для уровня пользовательского интерфейса в многоуровневом решении. [5]
На мероприятии Microsoft Connect 4 декабря 2018 года компания Microsoft объявила о выпуске Windows Forms как проекта с открытым исходным кодом на GitHub . Он выпущен под лицензией MIT . В этом выпуске Windows Forms стала доступна для проектов, ориентированных на платформу .NET Core . Однако платформа по-прежнему доступна только на платформе Windows, а неполная реализация Windows Forms в Mono остается единственной кроссплатформенной реализацией. [6] [7]
Архитектура
[ редактировать ]Приложение Windows Forms — это приложение, управляемое событиями, поддерживаемое Microsoft .NET Framework . В отличие от пакетной программы , она проводит большую часть своего времени, просто ожидая, пока пользователь что-то сделает, например заполнит текстовое поле или нажмет кнопку . Код приложения можно написать на языке программирования .NET, таком как C# или Visual Basic .
Windows Forms обеспечивает доступ к собственным общим элементам управления пользовательского интерфейса Windows , заключая существующий API Windows в управляемый код . [8] С помощью Windows Forms .NET Framework обеспечивает более полную абстракцию над Win32 API, чем 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 созданием графического пользовательского интерфейса на основе XAML с использованием таких платформ, как WPF и UWP . Однако размещение компонентов графического пользовательского интерфейса методом перетаскивания аналогично Windows Forms по-прежнему обеспечивается в XAML путем замены корневого элемента XAML страницы/окна на элемент управления пользовательским интерфейсом «Canvas». Внося это изменение, пользователь может создать окно аналогично Windows Forms, напрямую перетаскивая компоненты с помощью графического интерфейса Visual Studio.
Хотя XAML обеспечивает обратную совместимость с перетаскиванием при размещении через элемент управления Canvas, элементы управления XAML похожи только на элементы управления Windows Forms и не имеют обратной совместимости «один к одному». Они выполняют схожие функции и имеют схожий внешний вид, но свойства и методы настолько различаются, что требуют переназначения одного 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 была невозможна, поскольку Microsoft System.Windows Forms в основном представляет собой обертку 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-разрядной платформы.
См. также
[ редактировать ]- Майкрософт Визуал Студия
- НажмитеOnce
- Abstract Window Toolkit (AWT), эквивалентный (API) с графическим пользовательским интерфейсом интерфейс прикладного программирования для Java. языка программирования
- Библиотека визуальных компонентов (VCL) от Borland
- Визуальный тест , автоматизация тестирования
Ссылки
[ редактировать ]- ^ «v8.0.0» . github.com . 14 ноября 2023 г. Проверено 21 ноября 2023 г.
- ^ Селлс, Крис (6 сентября 2003 г.). Программирование Windows Forms на C# (1-е изд.). Аддисон-Уэсли Профессионал. п. xxxviii.
- ^ «Руководство по проектированию и реализации веб-клиентов от Microsoft Pattern and Practices» . Майкрософт. Ноябрь 2003 года.
- ^ Селлс, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение Б». Переход от MFC, Программирование Windows Forms 2.0 (2-е изд.). Аддисон-Уэсли Профессионал.
- ^ «Введение в Windows Forms» (документация Visual Studio 2003). Майкрософт 2003.
- ^ Мартин, Джефф (4 декабря 2018 г.). «Открытые исходные коды Microsoft WPF, WinForms и WinUI» . ИнфоQ . Проверено 6 декабря 2018 г.
- ^ Генсельман, Скотт (4 декабря 2018 г.). «Объявление о том, что WPF, WinForms и WinUI становятся открытым исходным кодом» . Проверено 6 декабря 2018 г.
- ^ Де Смет, Барт (4 января 2011 г.). «Глава 5». Выпуск C# 4.0 . Издательство Самс.
- ^ Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . О'Рейли Медиа. п. 4.
- ^ Jump up to: а б Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах . О'Рейли Медиа. стр. 27–53.
- ^ Jump up to: а б с «Часто задаваемые вопросы: Winforms» . mono-project.com.
Очень маловероятно, что в реализации когда-либо будет реализовано все необходимое для полной совместимости с Windows.Forms. Причина в том, что Windows.Forms не является полным набором инструментов, и для решения этой проблемы программисту предоставляется доступ к некоторым базовым основам Win32 в виде обработчика сообщений Windows.
- ^ Селлс, Крис; Вайнхардт, Майкл (16 мая 2006 г.). «Приложение А. Что нового в Windows Forms 2.0». Программирование Windows Forms 2.0 (2-е изд.). Аддисон-Уэсли Профессионал.
- ^ Нойес, Брайан (12 января 2006 г.). "Предисловие". Привязка данных с помощью Windows Forms 2.0: программирование приложений данных Smart Client с помощью .NET (1-е изд.). Аддисон-Уэсли Профессионал. ISBN 978-81-317-4823-7 .
- ^ Холл, Гэри (27 декабря 2010 г.). «DirectX, а не GDI+». Pro WPF и Silverlight MVVM: эффективная разработка приложений с помощью модели (изд. 2010 г.). Апресс. п. 2.
- ^ Смит, Джош (5 сентября 2007 г.). «WPF против Windows Forms» . Джош Смит о WPF . Проверено 25 августа 2011 г.
WPF не предназначен для замены Windows Forms. [...] Windows Forms все еще жива и здорова, и Microsoft будет продолжать ее совершенствовать и поддерживать в течение многих лет. WPF — это просто еще один инструмент, который разработчики настольных приложений Windows могут использовать, когда это необходимо.
- ^ «Вопросы и ответы о WPF» . infoq.com. 03 апреля 2014 г. Проверено 21 апреля 2014 г.
Windows Forms продолжает поддерживаться, но в режиме обслуживания. Они будут исправлять ошибки по мере их обнаружения, но новые функции не обсуждаются.
- ^ Аллен, Джонатан (6 мая 2014 г.). «Улучшения высокого разрешения для Windows Forms в .NET 4.5.2» . ИнфоQ . Проверено 10 февраля 2015 г.
- ^ «ВинФормс» . mono-project.com . Проверено 30 июля 2011 г.
Поддержка Windows Forms 2.0 завершена. На данный момент мы по большей части просто исправляем ошибки и дорабатываем наш код.
- ^ «ВинФормс» . mono-project.com . Проверено 30 июля 2011 г.
Работает ли Winforms на OSX? Да, начиная с Mono 1.9, Winforms имеет собственный драйвер OSX, который используется по умолчанию.
- ^ де Икаса, Мигель (07 марта 2011 г.). «КРИ 2011» . Проверено 30 июля 2011 г.
Для инструментов, которые в основном основаны на OpenGL/DirectX, используйте Windows.Forms, помня, что с их стороны может потребоваться некоторое исправление ошибок или обходные пути, поскольку наш Windows.Forms активно не разрабатывается.
- ^ «Введение в Mono на macOS» . mono-project.com . Проверено 12 ноября 2019 г.
- ^ Мартин, Джесс. «Windows.Forms доступен в 64-битной Mac OS X» . Проверено 12 ноября 2019 г.
Внешние ссылки
[ редактировать ]- Терминология .NET
- программное обеспечение 2002 года
- Ранее проприетарное программное обеспечение
- Бесплатное программное обеспечение с открытым исходным кодом
- Интерфейсы прикладного программирования Microsoft
- бесплатное программное обеспечение Майкрософт
- Моно (программное обеспечение)
- Программное обеспечение, использующее лицензию MIT
- Наборы инструментов для виджетов
- Бесплатное программное обеспечение только для Windows