Tabcontrol style xp (ne vous réjouissez pas trop vite)

Soyez le premier à donner votre avis sur cette source.

Vue 11 923 fois - Téléchargée 754 fois

Description

Alors voilà, je cherchai comment utiliser le style xp dans les TabControls en .NET, chose qui n'est pas possible actuellement avec le Framework 1.1.
J'ai alors eut deux idées :

. La première consistait à utiliser l'évènement Paint d'une TabPage, mais j'ai laissé tomber car je n'ai pas trouvé où se cachent les couleur du dégradé utilisé par le système. Je vous laisse quand même un bout de code ci-dessous.

. La seconde idée consistait tout simplement à remplir une TabPage d'un nouveau TabControl, ceux ci acceptant le style xp quand ils sont vide. Chose qui marchait nickel à première vue, mais qui apporte son lot de contraintes : la transparence des controls CheckBox, RadioButton et GroupBox n'est pas gérée... :(

Si quelqu'un à une autre solution merci de me la faire savoir

Source / Exemple :


'Code à placer dans l'évènement Load de votre Form.
'N'oublier pas d'activer le style xp avec "Application.EnableVisualStyles()", juste après "InitializeComponent()" dans " Public Sub New()"

Dim x As Integer
Dim TabP As TabPage
For Each TabP In TabControl1.Controls
    x = x + 1
    Dim BackTabControl As New TabControl
    BackTabControl.Name = "BackTabControl" & x
    BackTabControl.Location = New Point(-4, -4)
    BackTabControl.Size = New Size(TabPage1.Width + 8, TabPage1.Height + 8)
    TabP.Controls.Add(BackTabControl)
Next TabP

'---------------------------------------------------------------------------

'Autre méthode, code pour l'évènement paint d'une TabPage, ici nommée TabPage1

Dim Linear As New Drawing2D.LinearGradientBrush(New Rectangle(0, 0, TabPage1.Width, TabPage1.Height), SystemColors.ControlLightLight, SystemColors.ControlLight, Drawing2D.LinearGradientMode.Vertical)
e.Graphics.FillRectangle(Linear, New Rectangle(0, 0, TabPage1.Width, TabPage1.Height))
Linear.Dispose()

Conclusion :


Voilà, en espérant que celà puisse aider quelqu'un
@+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
jrbleboss >>> pas automatiquement non... il faut spécifier à ton appli d'utiliser les themes d'xp

Pym Corp >>> Il y a 3 controles qui posent problèmes : CheckBox, GroupBox et Slider.
Pour les 2 premiers, j'ai redéveloppé les miens (pas encore en ligne)... pour le slider, j'ai eu la fleme... je ne l'utilise jamais ;)

Par contre, ces problèmes sont totalement réglés avec .NET2
Messages postés
480
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2007

Dites moi si je me trompe mais en .net les control sont automatiquement au style xp si on l'as bien sur ??
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007
1
Bonjour SebMaFete,

Je me suis développé une tabcontrol autorisant le style de windows xp en vb.net assez similaire à la tienne (j'utilise uxtheme également).

Je rencontre un problème assez génant par contre : quelques controls comme les GroupBoxs ou les TrackBars n'acceptent pas la transparence, même en créant un control utilisateur et en les héritants pour qu'ils acceptent le style transparent.

Aurais tu une idée pour corriger ce problème ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
pour avoir une solution simple de la mise en oeuvre de UXTheme.dll, regarde ma source : http://www.csharpfr.com/code.aspx?ID=30908
Messages postés
207
Date d'inscription
jeudi 21 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2006

Oui moi aussi je test le bêta de vb 2005 et le framework 2.0 corrige ce problème, et bien d'autre chose aussi :)
Je viens de regarder ton lien et c'est vrai qu'utilser uxtheme.dll ne peut être que la meilleur solution, vu que widows fait de même.
En tout cas le gars qui a fait ça à l'air de bien s'être déchiré... alors que moi c'était plûtot dans la simplicité, mais le résultat n'est pas le même.
Enfin, vivement la finale de vs 2005 !
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.