Поскольку в конце 2018 года Windows Forms стала «открытой» и весь интерфейс был перенесен на .
NET Core, и команда, и наши внешние участники были заняты исправлением старых ошибок и добавлением новых функций.
В этом посте мы поговорим о новых функциях среды выполнения Windows Forms в .
NET 5.0. Посмотрите под кат!
Улучшения и дополнения к элементам управления Windows
Пожалуй, самое замечательное в Windows Forms сегодня — это активное и заинтересованное сообщество на GitHub. Многие новые функции и улучшения были предложены или даже полностью реализованы членами нашего сообщества.В рамках разработки .
NET 5.0 мы приняли и объединили более 900 запросов, причем более 70% этих запросов поступило от нашего сообщества.
Огромный привет всем участникам, которые помогли нам улучшить среду выполнения Windows Forms. Вот несколько примеров того, что мы получили от сообщества.
Новый элемент управления TaskDialog
Диалоговое окно задачи — это диалоговое окно, которое можно использовать для отображения информации и получения простых вводимых данных от пользователя, но оно имеет больше функций, чем окно сообщения.
Как и окно сообщения, оно форматируется операционной системой в соответствии с указанными вами настройками.
Улучшения ListView
Элемент управления ListView знаком разработчикам Windows Forms, но у него не было API для быстрого доступа к некоторым функциям, добавленным в Windows Vista, таким как свертываемые группы, групповые задачи, субтитры и нижние колонтитулы.В .
NET 5.0 мы закрыли пробел в API, и Windows Forms ListView теперь намного ближе к стандартному элементу управления Win32.
Новый API включает в себя: * свернуть/развернуть группу ListView * Нижние колонтитулы группы ListView * Субтитры группы ListView * Групповые задачи ListView * Изображение заголовка группы ListView
Улучшения FileDialog
FileDialog имеет новый API: FileDialog.ClientGuid. Диалоговое окно файла Windows позволяет вызывающему приложению связать GUID с постоянным состоянием диалогового окна.Состояние диалогового окна может включать такие факторы, как последняя посещенная папка, а также положение и размер диалогового окна.
Обычно это состояние поддерживается в зависимости от имени исполняемого файла.
Когда вы указываете GUID, приложение может иметь разные постоянные состояния для разных версий диалогового окна в одном приложении (например, диалоговое окно импорта и диалоговое окно открытия).
Улучшения производительности
Windows Forms всегда была известна как управляемая оболочка Win32 API. Таким образом, Windows Forms всегда в значительной степени полагался на уровень взаимодействия с неуправляемыми компонентами Windows. Основным приоритетом с первых дней существования .NET Core была оптимизация нашего уровня взаимодействия, создание нетрансформируемых структур и явный выбор более эффективных.
«W» функции и использовать «небезопасный» код там, где это возможно.
Все эти изменения мы называем «изменениями арахисового масла» в том смысле, что каждое из них крошечное и едва заметное, но в течение срока службы приложения эти изменения приводят к значительному повышению производительности.
В .
NET 5.0 мы подняли планку выше и оптимизировали несколько путей.
Исторически сложилось так, что Windows Forms полагалась на GDI+ (и некоторые GDI) для операций рендеринга.
Хотя GDI+ проще в использовании, чем GDI, поскольку он абстрагирует контекст устройства (структуру с информацией о конкретном устройстве отображения, таком как монитор или принтер) через объект Graphics, он также работает медленно из-за дополнительных накладных расходов.
В ряде ситуаций, когда мы имеем дело со сплошными цветами и кистями, мы решили использовать GDI. Мы также расширили ряд API, связанных с рендерингом (например, PaintEventArgs ), используя интерфейс IDeviceContext, который, хотя и не может быть напрямую доступен разработчикам Windows Forms, позволяет нам обойти объект GDI+ Graphics и, таким образом, уменьшить выделение и увеличить скорость.
Эти оптимизации показали значительное снижение потребления памяти при перерисовке путей, в некоторых случаях экономия в 10 раз при выделении памяти.
Для более технического погружения вы можете посмотреть Сегмент обзора API или Сегмент стендапа сообщества .
NET , где Джереми Кун рассказывает об этих оптимизациях.
Вы можете пройти тестовый проект Здесь и проверьте результаты сами, как один из наших пользователей Джереми Синклер:
И последнее, но не менее важное: мы расширили API. TextRenderer принять перегрузку символов ReadOnlySpan, поскольку рисование и измерение текста — довольно распространенное занятие.
Это позволит отображать текст гораздо более эффективно, когда можно избежать появления новых строк (разрезание других входных данных, построение массива символов на основе стека и т. д.).
Улучшения и исправления специальных возможностей
В течение последних нескольких лет команда обновляла пакет Windows Forms SDK 20-летней давности, чтобы он соответствовал сегодняшним требованиям доступности и соответствия требованиям.Мы внесли множество улучшений в .
NET 5.0, включая, помимо прочего:
- Поддержка автоматизации пользовательского интерфейса для ряда элементов управления, включая:
- Кнопка
- Посмотреть список
- Флажок
- Радиокнопка и т. д.
- Поддерживать LegacyIAccessible Control Pattern позволяет пользователям лучше взаимодействовать с элементами управления пользовательского интерфейса и позволяет разработчикам устанавливать собственные свойства AccessibleRole для своих элементов управления.
- Шаблоны элементов управления Text и TextRange разрешить пользователям извлекать текстовое содержимое, текстовые атрибуты и встроенные объекты из текстовых элементов управления.
Мы также исправили несколько проблем, которые влияли на пользовательский интерфейс при использовании некоторых инструментов специальных возможностей.
Например, мы переработали реализации специальных возможностей, так что доступ к AccessibleObject больше не приводит к преждевременному созданию элемента управления Handle, что, в свою очередь, обеспечивает более предсказуемое поведение элемента управления и позволяет избежать неожиданных сюрпризов в пользовательском интерфейсе.
Мы также улучшили и исправили поведение некоторых элементов управления (таких как PropertyGrid и MonthCalendar), которые могли помешать инструментам специальных возможностей правильно перемещаться по пользовательскому интерфейсу или, в серьезных случаях, привести к сбою приложений.
Поддержка Visual Basic
Visual Basic вместе с его платформой приложений поддерживается в .NET 5 и Visual Studio 16.8! Visual Studio 16.8 включает в себя конструктор Windows Forms, поэтому Visual Basic готов к миграции существующих приложений или созданию новых приложений.
Для получения более подробной информации, пожалуйста, свяжитесь публикации Приложения Visual Basic WinForms в .
NET 5 и Visual Studio 16.8.
Критические изменения
Хотя мы намерены максимально поддерживать обратную совместимость с .NET Framework и .
NET Core, это не всегда разумно.
Список критических изменений можно найти здесь:
Список известных проблем см.документ «Известные проблемы .
NET 5.0».
Теги: #Разработка для Windows #microsoft #программирование #Windows #C++ #.
NET #.
net 5 #windows form
-
Защита На Всех Этапах Кибератак
19 Oct, 24 -
Верстка В Облаке Этикеток
19 Oct, 24 -
Не Бойтесь Компромата
19 Oct, 24