2013-04-24 10 views

Odpowiedz

7

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.

+0

+1 interesujące. Czy masz referencję do tego? –

+0

@Jay Nie bardzo, nie. Dokumentacja zawiera pewne wskazówki, podobnie jak spojrzenie na źródło referencyjne. Ale najlepsze referencje to moje doświadczenie. –

Powiązane problemy