2010-10-08 19 views
0

Auparavant, j'avais l'habitude de jouer avec VB6 pour développer quelques projets personnels. Après ma mise à niveau vers Windows 7, j'ai décidé de jouer avec vb.net Express Edition 2010.Faire une application vb.net se fondre dans le thème Windows

Si je voulais que mon application VB6 se fondre dans le style visuel de Windows, j'utiliserais le code et les techniques décrits here. En bref, j'utiliserais un fichier manifeste et quelques appels dans l'application et la plupart des éléments ressembleraient au thème XP appliqué. S'il était exécuté en 2000, 95 ou 98, il ressemblerait à une application Windows standard. Tout était bien.

Maintenant que je suis passé sur vb.net, j'ai écrit une simple application "Hello, world" mais je n'ai absolument aucune idée sur la façon de faire ressembler le thème Windows 7 (par exemple, la police correspond à la police système et les widgets sont correctement stylés).

Le simple fait de modifier la police est un hack et ne semblera pas à sa place sur les machines qui sont configurées différemment ou exécuter une version différente de Windows où la police par défaut est différente. Comment puis-je m'assurer que mon application correspond au thème Windows appliqué, quelle que soit la version de Windows?

+0

Vous ne devriez rien faire si vous utilisez les composants et les commandes standard. Ils prennent déjà le thème de Window actuel. Ou au moins ils le font en C#. – ChrisF

+0

dans .NET 2003, vous deviez définir la propriété 'FlatStyle' de chaque contrôle sur' System', puis appeler 'Application.EnableVisualStyles()' dans le code. Cela était nécessaire pour des choses comme les boutons, mais il semblait que d'autres contrôles formatés automatiquement. Je ne sais pas si c'est le cas dans les versions ultérieures de VB. –

Répondre

1

Beaucoup de ceci est automatique si vous créez une application Windows Forms. Ils utiliseront (pour la plupart) les contrôles Windows natifs standard qui se dessinent avec les couleurs du thème. Mais il existe des exceptions:

  • Le modèle d'élément de formulaire utilise une police par défaut nommée Microsoft Sans Serif. Vous devrez le changer à Segoe UI pour correspondre à la valeur par défaut de Vista/Win7. Ceci est seulement nécessaire pour la classe Form, tous les contrôles que vous mettez dessus hériteront automatiquement de cette police. Sur un ordinateur XP, le mappeur de polices Windows remarque que la police est manquante et revient automatiquement à MSS.

  • La classe MenuStrip utilise un rendu personnalisé pour dessiner les éléments de menu. Il essaie de faire correspondre le style Windows lorsque vous modifiez la propriété RenderMode à System mais la manière dont il dessine ne correspond pas au style Win7. Cliquez avec le bouton droit sur la boîte à outils, choisissez les éléments et sélectionnez MainMenu. C'est une version héritée que utilise Windows pour dessiner des menus afin de produire l'apparence de thème appropriée.

  • Un problème très similaire pour ToolStrip. Sa version héritée est ToolBar. C'est difficile à avaler, il n'utilise pas de barres d'armature qui rendent la barre d'outils plate et laide.

Il existe des problèmes similaires dans WPF mais avec le problème supplémentaire que WPF n'utilise aucun des contrôles Windows standard. Et se trompe dans les endroits subtils.