PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C# - Text Tutorial] WinForm Design API



Sawyer
20.08.2009, 04:45
Ich denke jeder .NET Coder kennt das Problem , man schreibt eine Anwendung , und verwendet Controls wie z.B die ListView , welche im Explorer unter Vista & Windows 7 besser aussieht.

Das ganze Problem lässt sich allerdings mit einer API umgehen , die ich zufällig in dem neuem Win7 .NET SDK Entdeckt habe.
Es müsste abwärtskompatibel sein , garantieren kann ich es aber nicht. Probiert es einfach aus ;)

Screenshot (vorher):
http://img.xrmb2.net/images/253824.png

Screenshot (danach):
http://img.xrmb2.net/images/627791.png

Benötigte API:

[DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
private static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList);Um das Theme für ein bestimmtes Control zu übernehmen muss ein Aufruf erfolgen , dabei ist es wichtige das es in dem Konstruktor der Anwendung bzw der Programm Klasse steht.

Nicht vergessen ein Namensimport für die Funktion "DllImport"

using System.Runtime.InteropServices;Aufruf:

SetWindowTheme(this.listView1.Handle, "explorer", null);Des weiteren möchte ich noch erwähnen das dieser Trick bei fast allen Controls anwendbar ist, allerdings nur bei einigen merkt man einen krassen unterschied wie z.B bei der ListView oder der TreeView.

MfG , ThePapst

hackerking
20.08.2009, 10:21
Hmm
Also das Funktioniert, aber kann man das "explorer" ersetzten durch und wenn ja durch was? Also sowas wie z. B. "calc" oder so?

EDIT// Nur unter XP klappt das anscheinend nicht. Nur unter Vista (bzw. 7..)

@echo off
02.08.2010, 14:39
Vielen dank bei mir hats funktioniert :)