Przejdź do treści stopki
Iron Academy Logo
Framework C#

Odkrywanie Trybu Ciemnego WinForms w .NET 10: Spostrzeżenia od Tima Coreya

Tim Corey
9m 07s

WinForms od dawna jest niezawodnym frameworkiem do budowy aplikacji desktopowych dla systemu Windows. Wraz z wydaniem .NET 10, Microsoft wprowadził oficjalne wsparcie dla trybu ciemnego w WinForms, nadając nowoczesny wygląd projektom Windows Forms z przeszłości.

W swoim filmie na temat "Dark Mode in WinForms in .NET 10 - But It's Not Perfect", Tim Corey przedstawia praktyczną prezentację, pokazując programistom, jak włączyć tryb ciemny, a także wskazuje na obecne ograniczenia i uwagi. Śledzenie jego demonstracji daje jasne zrozumienie tego, co jest możliwe, a co wciąż znajduje się w fazie wstępnego wsparcia.

Wprowadzenie do trybu ciemnego w WinForms

Tim zaczyna od zauważenia, że choć tryb ciemny jest teraz oficjalnie zaimplementowany w WinForms, to nie jest pozbawiony ograniczeń. Wprowadza swoją 10-minutową serię szkoleniową jako zwięzłe podejście dla programistów, którzy chcą szybkich odpowiedzi zamiast długich teoretycznych wyjaśnień.

Korzystając z Visual Studio 2026, Tim otwiera plik prostego projektu Windows Forms ukierunkowanego na .NET 10. Aplikacja to prosty formularz wyświetlający komunikat "Hello World" z polem tekstowym i przyciskiem. Aby zapewnić spójność między maszynami, ustawia DPI na 200% i oznacza projektanta jako nieświadomego DPI, co jest ważne, aby uniknąć błędów przy uruchamianiu aplikacji na różnych systemach Windows. Początkowe ustawienia pozwalają mu skoncentrować się wyłącznie na funkcji trybu ciemnego w WinForms.

Włączanie trybu ciemnego za pomocą Program.cs

Tim wyjaśnia, że główny punkt wejścia aplikacji WinForms znajduje się w klasie wewnętrznej statycznej Program i metodzie static void Main. Tutaj programiści mogą ustawić tryb kolorów przed wywołaniem Application.Run. Pokazuje, że zmiany trybu kolorów można dokonać przed Application.Initialize() lub tuż przed rozpoczęciem głównej aplikacji.

WinForms w .NET 10 oferuje trzy opcje trybu kolorów:

  • Classic: Standardowy tryb jasny.

  • Dark: Włącza tryb ciemny dla formularza i większości kontrolek.

  • System mode: Wykrywa obecny temat systemu Windows i stosuje go do aplikacji.

Tim podkreśla, że ustawienie tej właściwości musi nastąpić przed utworzeniem kontrolek w konstruktorze lub Form1.Designer.cs. Nie zrobienie tego skutkuje pozostawieniem niektórych kontrolek w trybie jasnym, mimo iż tryb ciemny jest włączony w czasie wykonywania.

Ograniczenie: Projektant nie odzwierciedla trybu ciemnego

Tim wskazuje na istotne ograniczenie: projektant formularzy nie pokazuje zmian trybu ciemnego. Nawet po ustawieniu trybu kolorów w pliku Program.cs, projektant wyświetla wszystkie kontrolki w trybie jasnym.

Przyglądając się Form1.Designer.cs, Tim podkreśla, że kontrolki, takie jak przyciski, pola tekstowe i etykiety, są inicjowane w konstruktorze. Linia trybu kolorów musi być ustawiona przed stworzeniem jakiejkolwiek instancji kontrolek. Mimo to, projektant WinForms nie aktualizuje się wizualnie, co jest ważną uwagą podczas finalizowania układów UI.

Uruchomienie aplikacji jednak potwierdza, że tryb ciemny jest poprawnie zastosowany w czasie wykonywania, tekst przyjmuje kolor biały, przyciski reagują na najechanie, a pola wejściowe wyświetlają biały tekst na ciemnym tle.

Ograniczenie: Niektóre kontrolki nie obsługują trybu ciemnego

Jednym z ograniczeń, na które Tim kładzie nacisk, jest to, że nie wszystkie kontrolki Windows Forms reagują na tryb ciemny. Na przykład, dialogi MessageBox zawsze są wyświetlane w trybie jasnym, ignorując tryb systemowy lub ustawienie trybu ciemnego.

Dzieje się tak, ponieważ WinForms opiera się na bibliotekach Win32, które pierwotnie nie były projektowane z myślą o ciemnych motywach. Jak wyjaśnia Tim, Microsoft stopniowo konwertuje biblioteki, aby obsługiwać tryb ciemny, ale funkcja ta wciąż pozostaje eksperymentalna w niektórych aspektach. Programiści wymagający spójnego wsparcia tematów na wszystkich kontrolkach mogą musieć użyć biblioteki innej firmy lub stworzyć własne kontrolki.

Ograniczenie: Obsługiwane tylko na Windows 11

Tim zauważa kolejne istotne ograniczenie: tryb ciemny w WinForms działa tylko na Windows 11. Na starszych wersjach, w tym Windows 10, tryb kolorów będzie wracał do klasycznego lub jasnego trybu, niezależnie od tego, co jest ustawione w wewnętrznej klasie statycznej Program.

To ograniczenie jest kluczowe przy tworzeniu aplikacji dla szerokiej bazy użytkowników. Programiści muszą wykrywać wersję systemu Windows lub ustawiać domyślne przejście do trybu jasnego, aby uniknąć niespodziewanych niespójności UI.

Ograniczenie: Tryb systemowy nie aktualizuje się automatycznie

Korzystając z trybu systemowego, WinForms wykrywa temat systemu przy starcie aplikacji. Tim wskazuje, że jeśli użytkownik zmieni temat Windows w czasie działania aplikacji, aplikacja nie dostosuje się automatycznie. Wymagane jest ponowne uruchomienie, aby temat się zaktualizował, co jest wewnętrznym ograniczeniem backportingu Win32.

To zachowanie podkreśla potrzebę decyzji programistów, czy wymusić domyślny temat, czy polegać na trybie systemowym z zrozumieniem, że zmiany w czasie działania wymagają ponownego uruchomienia.

Ograniczenie: Dostępność i tematy wysokiego kontrastu

Tim również ostrzega, że tryb ciemny nie działa z tematami dostępnymi, w tym ustawieniami wysokiego kontrastu. Jeśli użytkownik włączy temat dostępności systemu Windows, formularz i kontrolki wracają do trybu jasnego.

To jest ważne dla programistów, którzy chcą obsługiwać wszystkie scenariusze użytkowników, szczególnie tych, którzy polegają na ustawieniach kontrastu dla czytelności.

Praktyczne porady dla programistów

Pomimo tych ograniczeń, Tim podkreśla łatwość włączania trybu ciemnego w WinForms. Wymaga to tylko jednej linii kodu w pliku Program.cs, co sprawia, że jest proste do przetestowania i wdrożenia.

Zaleca użycie trybu systemowego domyślnie, pozwalając aplikacji na dostosowanie się do motywu użytkownika zamiast wymuszania konkretniego trybu. Tim zachęca również do aktualizacji do .NET 10, aby skorzystać z ulepszeń wydajności i finalnego wsparcia dla trybu ciemnego, w porównaniu do eksperymentalnego wsparcia w .NET 9.

Wnioski

Tim Corey konkluduje, że choć tryb ciemny w WinForms .NET 10 jest funkcją oficjalnie wdrożoną, istnieje kilka ograniczeń, które programiści powinni rozważyć:

  • Projektant nie wyświetla trybu ciemnego.

  • Niektóre kontrolki, jak MessageBox, pozostają w trybie jasnym.

  • Obsługiwane tylko na Windows 11; starsze systemy powracają do trybu klasycznego.

  • Zmiany trybu systemowego wymagają ponownego uruchomienia.

  • Tematy dostępności nie są kompatybilne z trybem ciemnym.

Nawet mimo tych zastrzeżeń, możliwość włączania trybu ciemnego przy minimalnym wysiłku jest mile widzianym dodatkiem do projektów Windows Forms. Śledząc film Tima Coreya wideo, programiści mogą z pewnością ustawiać tryby kolorów, testować swoje formularze i zdecydować, jak najlepiej wdrożyć tryb ciemny dla swoich użytkowników.

Hero Worlddot related to Odkrywanie Trybu Ciemnego WinForms w .NET 10: Spostrzeżenia od Tima Coreya
Hero Affiliate related to Odkrywanie Trybu Ciemnego WinForms w .NET 10: Spostrzeżenia od Tima Coreya

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie