2013-04-24 8 views

Antwort

7

Ja, sie sind & hellip; mit ein paar Ausnahmen.

Einige Dinge in WinForms sind benutzerdefinierte gezeichnet. Sie verwenden das native Steuerelement, aber sie aktivieren Owner-Draw und behandeln einige Zeichenlogik intern in C# -Code. Der Vorteil besteht darin, dass Elemente wie Schaltflächen eine BackColor-Eigenschaft haben, die eine benutzerdefinierte Farbe anstelle der Standardsystemfarbe unterstützt. Im Allgemeinen sollte dies vermieden werden (zumindest meiner Meinung nach), weil nicht nur der Effekt hässlich ist, es gibt wahrscheinlich einen Grund, warum der Benutzer das Farbschema wählte, das er tat. Aber Grafikdesigner denken oft, dass sie es besser wissen als Benutzer, also gibt es die Option.

Bei Steuerelementen, die auf diese Weise implementiert werden, ist häufig eine FlatStyle-Eigenschaft verfügbar, mit der Sie ändern können, wie sie gezeichnet werden (z. B. ButtonBase.FlatStyle). Mit FlatStyle.Standard führt das .NET Framework seine normale Besitzerzeichnung aus, auch wenn Sie keine der Eigenschaften des Steuerelements mit ungewöhnlichen Einstellungen angepasst haben. Mit FlatStyle.System wird das Steuerelement direkt von Win32 gerendert, ohne Owner-Draw oder andere Außerkraftsetzungen.

Sie können den Unterschied auf Tasten ziemlich leicht erkennen. Wenn der Wert auf FlatStyle.System eingestellt ist, blendet der blaue Hover-Effekt der Tasten allmählich aus und aus. Bei Einstellung auf FlatStyle.Standard erscheint das blaue Leuchten plötzlich und verschwindet. In der Nähe, aber nicht ganz gleich. Kombinationsfelder tun dasselbe (zumindest wenn ihre DropDownStyle-Eigenschaft auf ComboBoxStyle.DropDownList eingestellt ist).

Ich empfehle, alle Steuerelemente, die eine solche Eigenschaft haben, auf FlatStyle.System einzustellen, es sei denn, Sie benötigen unbedingt ein Verhalten, das von diesem FlatStyle nicht unterstützt wird.

Es gibt ein paar andere Ausnahmen. Einige WinForms-Steuerelemente sind in Win32 nicht vorhanden, sodass sie nicht von systemeigenen Steuerelementen unterstützt werden. Die DataGridView ist ein gutes Beispiel für eine solche Kontrolle. Die MenuStrip und ContextMenuStrip Steuerelemente werden schließlich vollständig in C# -Code geschrieben und manuell von WinForms gezeichnet. Sie werden von nativen Win32-Steuerelementen in keiner Weise gesichert. Aus diesem Grund sehen sie auf Windows Vista und später so schrecklich hässlich aus, weil sie für immer den Office XP-Stil festhalten. Es sah auf Windows XP cool aus, aber es ragt bei späteren Versionen wie ein wilder Daumen heraus. Das Ändern des Renderingstils von Professional zu System hilft auch nicht sehr.

Stattdessen müssen Sie die ursprünglichen Versionen dieser Steuerelemente, MainMenu und , zu Ihrer Toolbox hinzufügen. Sie sind nicht standardmäßig in den neuesten Versionen von Visual Studio enthalten, aber sie sind absolut immer noch verfügbar und werden nirgendwohin geführt. Auch hier empfehle ich dringend, diese zu verwenden, da sie zu 100% von den nativen Win32-Menüs unterstützt werden und daher unabhängig von der Windows-Version Ihres Benutzers so aussehen, wie sie sollten.

+0

+1 interessant. Hast du eine Referenz dafür? –

+0

@Jay Nicht wirklich, nein. Die Dokumentation gibt einige Hinweise, ebenso wie die Referenzquelle. Aber die beste Referenz ist meine Erfahrung. –