Czy aplikacje Windows Forms używają równoważnych natywnych elementów sterujących Win32 dla podstawowych elementów sterujących, takich jak Textbox i Button? WPF nie jest natywny, ale Windows Forms wygląda i wydaje się bardzo natywny. Animacje kontrolki Button wyglądają dokładnie tak, jak przycisk Win32.Czy podstawowe .NET Windows Forms kontroluje natywne kontrolki Win32?
Odpowiedz
Tak, są one & hellip; z kilkoma wyjątkami.
Niektóre rzeczy w WinForm są rysowane niestandardowo. Używają natywnego formantu, ale włączają rysowanie właściciela i obsługują część logiki rysowania wewnętrznie w kodzie C#. Zaletą tego jest to, że takie rzeczy jak przyciski mają właściwość BackColor
, która obsługuje zdefiniowany przez użytkownika kolor zamiast standardowego koloru systemu. Ogólnie rzecz biorąc, należy tego unikać (przynajmniej moim zdaniem), ponieważ nie tylko efekt jest brzydki, prawdopodobnie istnieje powód, dla którego użytkownik wybrał schemat kolorów, który zrobili. Ale graficy często myślą, że wiedzą lepiej niż użytkownicy, więc opcja istnieje.
Elementy sterujące, które są zaimplementowane w ten sposób, często eksponują właściwość FlatStyle
, która umożliwia zmianę sposobu ich rysowania (na przykład ButtonBase.FlatStyle
). W przypadku architektury FlatStyle.Standard
system .NET Framework wykonuje normalny rysunek właściciela, nawet jeśli nie dostosowano żadnej z właściwości kontrolki o niestandardowych ustawieniach. Z FlatStyle.System
kontrola jest renderowana bezpośrednio przez system Win32 bez żadnych zmian właściciela lub innych nadpisań.
Z łatwością można odróżnić przyciski. Po ustawieniu na FlatStyle.System
niebieski efekt zawisu na przyciskach stopniowo znika i znika. Po ustawieniu na FlatStyle.Standard
niebieski blask nagle pojawia się i znika. Blisko, ale nie do końca tak samo. Pola kombinowane robią to samo (przynajmniej gdy ich właściwość DropDownStyle
jest ustawiona na ComboBoxStyle.DropDownList
).
Zalecam ustawienie wszystkich elementów sterujących, które mają taką właściwość na FlatStyle.System
, chyba że absolutnie potrzebujesz zachowania nieobsługiwanego przez ten FlatStyle.
Istnieje kilka innych wyjątków. Niektóre formanty WinForm nie istnieją w Win32, więc nie są wspierane przez natywne formanty. Model DataGridView jest dobrym przykładem takiej kontroli.
Wreszcie, formanty MenuStrip i ContextMenuStrip są napisane w całości w kodzie C# i rysowane ręcznie przez WinForms. Nie są one w żaden sposób wspierane przez natywne formanty Win32. Właśnie dlatego wyglądają tak okropnie brzydko w systemie Windows Vista i późniejszych, ponieważ na zawsze utknęły w stylu Office XP. W systemie Windows XP wyglądało świetnie, ale w późniejszych wersjach wygląda jak bolesny kciuk. Zmiana stylu renderowania z Professional
na System
również nie pomaga bardzo.
Zamiast tego należy dodać oryginalne wersje tych elementów sterujących, MainMenu i ContextMenu, do zestawu narzędzi. Nie są one domyślnie uwzględnione w najnowszych wersjach Visual Studio, ale są całkowicie dostępne do użycia i nigdzie się nie wybierają. Ponownie, bardzo polecam ich używanie, ponieważ są one w 100% wspierane przez natywne menu Win32 i dlatego wyglądają tak, jak powinny, niezależnie od wersji systemu Windows użytkownika.
- 1. Natywne okno Win32 w sterowaniu WPF
- 2. .NET Windows Forms - przechwytywanie zdarzenia Close X
- 3. Zwykły obraz w kontrolce Windows Forms StatusStrip
- 4. Globalizacja istniejącej aplikacji Windows Forms?
- 5. Czy mogę wyświetlić kontrolki użytkownika systemu Windows wewnątrz IE8
- 6. Kompleks .Net 2.0 Formanty Windows Forms: od czego zacząć?
- 7. Jak przyspieszyć inicjowanie aplikacji klienckiej .NET (Windows Forms lub WPF)?
- 8. Jak otworzyć nowe okno w Windows Forms w .NET?
- 9. Jak zrobić menu WPF wyglądać jak Windows Forms ToolStripMenu?
- 10. Bezpłatna biblioteka kontrolek Windows .NET?
- 11. Wysyłaj lub wysyłaj wiadomość do pętli komunikatów Windows Forms
- 12. Mapy z aplikacją Windows Forms
- 13. Uwierzytelnianie MVC WebAPI z Windows Forms
- 14. WPF z Windows Forms - STAThread
- 15. Unikaj migotania w Windows Forms?
- 16. Zmiana domyślnego koloru tekstu kontrolki Picker w Xamarin Forms dla Windows Phone 8.1
- 17. Migotanie w aplikacji Windows Forms
- 18. Przywróć C# Windows Forms backcolor
- 19. Windows Phone 7 natywne wsparcie kod
- 20. Sterowniki Win32 przejrzyste we wszystkich wersjach systemu Windows
- 21. Czy aplikacje Windows Forms czekają na dane wejściowe użytkownika?
- 22. Czy można usunąć panel2 z SplitContainer w Windows Forms?
- 23. Czy powiązanie danych obsługuje zagnieżdżone właściwości w Windows Forms?
- 24. Czy w Windows Forms jest wbudowane okno dialogowe potwierdzenia?
- 25. Czy istnieje sposób renderowania SVG w Windows Forms?
- 26. Parsowanie zwykłego pliku Win32 PE (Exe/DLL) w .NET
- 27. umożliwiają poruszanie się na karcie kontrolnej Microsoft dla Windows Forms
- 28. Panel vs GroupBox w aplikacji Windows Forms
- 29. Rysowanie dużej liczby obrazów w C# Windows Forms
- 30. Uruchamianie exe aplikacji z Windows Forms
+1 interesujące. Czy masz referencję do tego? –
@Jay Nie bardzo, nie. Dokumentacja zawiera pewne wskazówki, podobnie jak spojrzenie na źródło referencyjne. Ale najlepsze referencje to moje doświadczenie. –