Windows Forms - Windows Forms
Оригинальный автор (ы) | .СЕТЬ: Microsoft, Мононуклеоз: 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 или же Моно Фреймворк,[1] предоставляя платформу для написания многофункциональных клиентских приложений для настольных, портативных и планшетных компьютеров.[2] Хотя это рассматривается как замена более ранним и более сложным C ++ основан Библиотека Microsoft Foundation Class, он не предлагает сопоставимой парадигмы[3] и действует только как платформа для уровня пользовательского интерфейса в многоуровневый решение.[4]
На Microsoft Connect мероприятие 4 декабря 2018 г., Microsoft объявила о выпуске Windows Forms как проекта с открытым исходным кодом на GitHub. Выпускается под Лицензия MIT. В этом выпуске Windows Forms стала доступна для проектов, ориентированных на .NET Core рамки. Однако фреймворк по-прежнему доступен только на платформе Windows, и Моно Неполная реализация Windows Forms остается единственной кроссплатформенной реализацией.[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]
История и будущее
Как Набор инструментов для абстрактного окна (AWT), эквивалент Ява 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]
Во время сеанса вопросов и ответов в Сборка 2014 Conference Microsoft объяснила, что Windows Forms находится в режиме обслуживания, без добавления новых функций, но найденные ошибки все равно будут исправлены.[15] Совсем недавно улучшенная поддержка высокого разрешения для различных элементов управления Windows Forms была представлена в обновлениях .NET Framework версии 4.5.[16]
Обратная совместимость XAML с Windows Forms
Для будущего развития Microsoft сменила Windows Forms с XAML -на основе ввода GUI с использованием таких фреймворков, как WPF и UWP. Однако размещение компонентов графического интерфейса с помощью перетаскивания аналогично Windows Forms по-прежнему обеспечивается в XAML путем замены корневого элемента XAML страницы / окна на элемент управления пользовательского интерфейса «Canvas». При внесении этого изменения пользователь может создать окно аналогично Windows Forms, напрямую перетаскивая компоненты с помощью графического интерфейса Visual Studio.
Хотя XAML обеспечивает обратную совместимость размещения перетаскиванием через элемент управления Canvas, элементы управления XAML похожи только на элементы управления Windows Forms и не имеют обратной совместимости один-к-одному. Они выполняют аналогичные функции и имеют похожий внешний вид, но свойства и методы достаточно разные, чтобы потребовать переназначения одного API на другой.
Альтернативная реализация
Мононуклеоз это проект, возглавляемый Xamarin (ранее Ximian, тогда Novell ) для создания Экма стандартное соответствие .СЕТЬ совместимый набор инструментов.
В 2011, Мононуклеоз поддержка 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-битной подсистемы, Углерод.[21]По состоянию на эту дату 64-разрядная версия System.Windows.Forms для использования в Mac OS X остается недоступной, и можно ожидать, что будут выполняться только приложения .NET, созданные для 32-разрядной платформы.
Смотрите также
- Microsoft Visual Studio
- ClickOnce
- Набор инструментов для абстрактного окна (AWT), эквивалент GUI интерфейс прикладного программирования (API) для Ява язык программирования
- Библиотека визуальных компонентов (VCL) от Borland
- Визуальный тест, автоматизация тестирования
Рекомендации
- ^ Продает, Крис (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. Получено 2018-12-06.
- ^ Хансельман, Скотт (4 декабря 2018 г.). «Объявление о переходе WPF, WinForms и WinUI на открытый исходный код». Получено 2018-12-06.
- ^ Де Смет, Барт (4 января 2011 г.). «Глава 5». C # 4.0 на свободе. Самс Паблишинг.
- ^ Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах. O'Reilly Media. п. 4.
- ^ а б Гриффитс, Ян; Адамс, Мэтью (март 2003 г.). NET Windows Forms в двух словах. O'Reilly Media. С. 27–53.
- ^ а б 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. Получено 2011-08-25.
WPF не предназначен для замены Windows Forms. [...] Windows Forms все еще жива и здорова, и в ближайшие годы Microsoft продолжит совершенствовать и поддерживать ее. WPF - это просто еще один инструмент, который разработчики настольных приложений Windows могут использовать при необходимости.
- ^ "Вопросы и ответы WPF". infoq.com. 2014-04-03. Получено 2014-04-21.
Windows Forms продолжает поддерживаться, но в режиме обслуживания. Они будут исправлять ошибки по мере их обнаружения, но новые функции отсутствуют.
- ^ Аллен, Джонатан (06.05.2014). «Улучшения высокого разрешения для Windows Forms в .NET 4.5.2». InfoQ. Получено 2015-02-10.
- ^ "WinForms". mono-project.com. Получено 2011-07-30.
Поддержка Windows Forms 2.0 завершена. На данный момент мы в основном просто исправляем ошибки и полируем наш код.
- ^ "WinForms". mono-project.com. Получено 2011-07-30.
Работает ли Winforms на OSX? Да, начиная с Mono 1.9, Winforms имеет собственный драйвер OSX, который он использует по умолчанию.
- ^ де Икаса, Мигель (2011-03-07). «GDC 2011». Получено 2011-07-30.
Для инструментов, которые в основном основаны на OpenGL / DirectX, используйте Windows.Forms, помня, что с их стороны может потребоваться исправление ошибок или обходные пути, поскольку наши Windows.Forms активно не разрабатываются.
- ^ «Введение в Mono на macOS». mono-project.com. Получено 2019-11-12.
- ^ Мартин, Джесс. «Windows.Forms приходит в 64-битную Mac OS X». Получено 2019-11-12.