none
Как включить в своём приложении на .Net 6.0 Windows Forms поддержку тёмной темы? RRS feed

  • Вопрос

  • Подскажите, пожалуйста, как включить в своём приложении на .Net 6.0 LTS (Приложение Windows Forms) поддержку тёмной темы? Попробовал, по умолчанию не работает.
    25 апреля 2022 г. 12:51

Все ответы

  • Здравствуйте.

    Расскажите о проблеме более подробно.


    Alexandr_Smirnoff

    25 апреля 2022 г. 14:58
  • Просто включить думаю никак, эта темная тема работает только для приложений UWP. Можно получить текущие настройки темы через API UWP или через реестр, и применить вручную к своей программе. Либо использовать недокументированные функции из библиотеки uxtheme.dll. В интернете гуляют рецепты на эти оба способа: https://stackoverflow.com/q/53501268/8674428https://stackoverflow.com/q/51334674/8674428
    • Изменено VadimTagil 26 апреля 2022 г. 4:59
    25 апреля 2022 г. 17:33
  • Расскажите о проблеме более подробно.


    У Microsoft всё через Ж. Поддержку HiDPI в приложениях на WinForms нормально не сделали. Про тёмную тему вообще не говорю. Поэтому беря самую новую технологию NET (а это сейчас версия 6) я хочу получить все новые фишки. Пусть тёмная тема хотя бы в Windows 11 сработала бы. Ан нет...

    26 апреля 2022 г. 6:06
  • Если вы пишете под Windows 10-11, может перейти на UWP/WinUI? Хоть .NET 6 и самый новый, Windows Forms не получала серьезных обновлений с VS2010.  Сейчас в планах у разработчиков только добавить нормальный API для получения текущей темы: https://github.com/dotnet/winforms/issues/6270, то есть чтобы первый из моих способов можно было реализовать без хаков. Полноценную поддержку темной темы неизвестно когда даже начнут делать.
    26 апреля 2022 г. 8:36
  • Если вы пишете под Windows 10-11, может перейти на UWP/WinUI?
    Мне надо, чтобы программа работала и на Windows 7, и на Windows 8. Надо так, если операционная система нормально не поддерживает тёмную тему, то приложение выглядит по обычному. Если же ОС поддерживает, то и моё приложение должно тёмное. А пока получается, что на Lazarus и Free Pascal гораздо проще тёмную тему обеспечить для своего приложения.
    26 апреля 2022 г. 10:21
  • Если вы пишете под Windows 10-11, может перейти на UWP/WinUI?

    Мне надо, чтобы программа работала и на Windows 7, и на Windows 8. Надо так, если операционная система нормально не поддерживает тёмную тему, то приложение выглядит по обычному. Если же ОС поддерживает, то и моё приложение должно тёмное. А пока получается, что на Lazarus и Free Pascal гораздо проще тёмную тему обеспечить для своего приложения.
    Тогда Вам лучше воспользоваться рекомендацией от VadimTagil (цитата): "Можно получить текущие настройки темы через API UWP или через реестр, и применить вручную к своей программе." Это самый простой и быстрый способ для Windows Forms.

    Alexandr_Smirnoff

    28 апреля 2022 г. 8:47