APPLIQUER LE STYLE XP EN VB.NET

cs_lienrag Messages postés 22 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 3 février 2005 - 14 avril 2003 à 12:55
cariok Messages postés 2 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 27 janvier 2006 - 27 janv. 2006 à 15:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6740-appliquer-le-style-xp-en-vb-net

cariok Messages postés 2 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 27 janvier 2006
27 janv. 2006 à 15:34
Merci pour ta réactivité.
Je ne suis pas sûr d'avoir bien saisi.
Mon contexte est le suivant : mon client possède Visual Studio 2005, avec le Framework 2.0.
Malheureusement ils sont toujours sous l'OS W.2000
Si j'ai bien compris, ils garderont le style "rétro", avec une légère évolution sur quelques contrôles ?
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
27 janv. 2006 à 14:56
On peut repondre par ni oui ni non, mais ca ne risque pas de te plaire :)

Le fichier manifest (plus trop a la mode il faut l'avouer) et les methodes d'autorisation des style visuel se base sur ton OS. Donc pour 2000 tu aurras au mieu une legere modification de tes control un peu dans le style de ce qui existait dans office 2000. Avec des textbox un peu plus sympas. Mais je ne crois pas que les autres controls soient affectes.

Si quelqun a la liste, pourquoi pas, mais avec copain Vista qui pointe...

Et puis Dot Net 2, enfin le reve quoi ;)
cariok Messages postés 2 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 27 janvier 2006
27 janv. 2006 à 12:13
Petite question : cette source est-elle valable avec l'OS Windows 2000 ?
Merci d'avance
TheEwook Messages postés 155 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 mai 2005
19 août 2004 à 19:24
re :

Le code est cool, j'ai fait des modifs pour que le style xp s'applique sur les autres controls (checkbox, radiobutton)

C'est sur qu'on pourrait en faire une source. Ben si tu veux tu peux la poster car tu a pratiquement tout fait. Moi je n'ai eu que l'idée.

Voilà le code au finish :

Dans un module :

Public Sub Appliquer_Style_XP(ByVal vCtrl As Control)
Dim C As Control
'recherche de tout les controls
For Each C In vCtrl.Controls
'verification du type
Select Case C.GetType.ToString
Case "System.Windows.Forms.Button"
Dim CBtn As System.Windows.Forms.Button
CBtn = C
CBtn.FlatStyle = FlatStyle.System
CBtn = Nothing 'leberation memoire

Case "System.Windows.Forms.GroupBox"
Appliquer_Style_XP(C)
Dim cGBox As System.Windows.Forms.GroupBox
cGBox = C
cGBox.FlatStyle = FlatStyle.System
cGBox = Nothing 'memoire quand tu nous tiend

Case "System.Windows.Forms.CheckBox"
Appliquer_Style_XP(C)
Dim chckBox As System.Windows.Forms.CheckBox
chckBox = C
chckBox.FlatStyle = FlatStyle.System
chckBox = Nothing 'memoire quand tu nous tiend

Case "System.Windows.Forms.RadioButton"
Appliquer_Style_XP(C)
Dim cRdtnBox As System.Windows.Forms.RadioButton
cRdtnBox = C
cRdtnBox.FlatStyle = FlatStyle.System
cRdtnBox = Nothing 'memoire quand tu nous tiend

Case Else
Appliquer_Style_XP(C) ' et c'est reparti pour chercher les autres controls qui sont contenus dans C
End Select
Next

'Liberation memeoire
C = Nothing

End Sub

Et dans la form_load

Appliquer_Style_XP(Me)

Voilà
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
18 août 2004 à 22:55
Pardon ce n'est pas dans un Main mais dans le Load qu'il faut ajouter Appliquer_Style_XP(Me)
....
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
18 août 2004 à 22:49
ohhhhh Toi tu es difficil a satisfaire.....
....mais j' la solution (code pondu en 5 minutes pas plus)


Dans ton Main tu ajoute: Appliquer_Style_XP(Me)

Et dans un modul :

Public Sub Appliquer_Style_XP(ByVal vCtrl As Control)
Dim C As Control
'recherche de tout les controls
For Each C In vCtrl.Controls
'verification du type
Select Case C.GetType.ToString
Case "System.Windows.Forms.Button"
Dim CBtn As System.Windows.Forms.Button
CBtn = C
CBtn.FlatStyle = FlatStyle.System
CBtn = Nothing 'leberation memoire

Case "System.Windows.Forms.GroupBox"
Appliquer_Style_XP(C)
Dim cGBox As System.Windows.Forms.GroupBox
cGBox = C
cGBox.FlatStyle = FlatStyle.System
cGBox = Nothing 'memoire quand tu nous tiend

Case Else
Appliquer_Style_XP(C)' et c'est reparti pour chercher les autres controls qui sont contenus dans C
End Select
Next

'Liberation memeoire
C = Nothing

End Sub

Simple....
Tu peux toujours ajouter d'autres "Case", mais je ne sais pas quels autres controls peuvent etres concernes.

Si tu as d'autres idees on pourait en faire un ZIP.
TheEwook Messages postés 155 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 30 mai 2005
18 août 2004 à 18:24
OK mais ton programme ne modifie pas les propriétés des buttons qui se trouvent par exemple dans un groupbox.

Donc les bouttons se trouvant dans des groupbox ne prennent pas les proprietés flastyle = system
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
18 août 2004 à 00:17
tu peux aussi faire un select case pour modifier les autres controls en fonction de leur type
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
18 août 2004 à 00:14
j'ai ce qui te faut (dans ton Load):

Dim B As Control
Dim BTN As Button
'recherche de tout les controls
For Each B In Me.Controls
'verification du type
If B.GetType.ToString = "System.Windows.Forms.Button" Then
Debug.WriteLine(B.GetType())
BTN = B
BTN.FlatStyle = FlatStyle.System
End If
Next
'Liberation memeoire
B = Nothing
BTN = Nothing

Il doit y avoir encore plus simple... je vais chercher
@+
Pour ca c'est bon

Mais ce que je voudrais faire c'est justement une fonction aui au démarrage de l'appli qui mette la proprietes : FlatStyle : sur tous les boutons, texbox, etc.....
(Pour c apas de pb : ma fonction marche)


Et IMPORTANT (ce que je n'arrive pas à faire) : c'est que les boutons etc.... qui se trouve dans un group box prennent aussi la propriete : FlatStyle :

Si quelqu'un a une idée, qu'il me fasse signe.

J'espere que vous avez compris ce que je veux faire
jmenfous Messages postés 117 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 juillet 2009 1
17 août 2004 à 22:48
J'ai déjà utilise l'équivalant sous vb6, mais?..
En Dot Net, on n'a pas besoin de réinventer la roue. En effet il existe déjà un moyen d'utiliser le style XP. Pour cela il faut mettre la ligne suivante dans la méthode New de ton premier formulaire ou en première ligne de ton Main

Application.EnableVisualStyles

J'ai teste, c'est supper simple? seul petit truc a faire en plus, mettre la propriété FlatStyle des boutons (et quelques autres composants) sur System.
Apres, plus rien à faire.
ManDeq59 Messages postés 55 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 6 juillet 2004
30 mai 2004 à 13:04
OK, merci ca marche
Il faudrait faire un truc pour que tous les objets de la form prennent automatiquement cette proprieté.

J'ai vu qu'il y a déjà un truc comme ca dans cette source, mais elle ne doit pas marcher qd un objet fait parti d'un autre objet.

Si quelqu'un a une suggestion ????
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
30 mai 2004 à 01:38
ManDeq59 --> Il faut mettre la propriété "FlatStyle" du contrôle à "System".
ManDeq59 Messages postés 55 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 6 juillet 2004
29 mai 2004 à 17:04
Une petite remarque :
j'ai un bouton ç l'intérieur d'un groupbox ==> Le style xp ne s'applique pas sur le bouton.
Le fait que le bouton fasse partie du groupbox ca merde !!!!!

Y a un moyen de le faire quand même ???

Sinon, y a pas de pb, c'est nikel !! félécitation !!!!
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
7 nov. 2003 à 18:05
Encore Merci....
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
7 nov. 2003 à 17:16
Retournes voir ma source :
http://www.vbfrance.com/code.aspx?ID=17542

Je l'explique dans "Description de la source"
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
7 nov. 2003 à 12:58
Comment on intergre le .manifest a l'exe en VB.NET pour plus qu'il traine a coté ?
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
3 nov. 2003 à 20:43
C bon g trouvé, en fait c vraiment simple.

Merci Spy
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
3 nov. 2003 à 17:39
Oui j'avais daja vu, mais aprés je sais po koi en faire.
Ou je trouve des styles ?? et comment je les appliquent ??
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
2 nov. 2003 à 23:29
Dromax --> J'ai fait une source là dessus, va y jeter un oeil si tu veux : http://www.vbfrance.com/code.aspx?ID=17542

Le .exe.manifest sert à ce que ton application prenne en charge le style XP (les beux bouttos et tout et tout)
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
2 nov. 2003 à 22:22
C koi et a koi sert un .exe.manifest ???
Utilisateur anonyme
14 sept. 2003 à 12:22
Euh oui c'est sur...
Tu l'as ? :)
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
14 sept. 2003 à 00:53
Ouai, enfin, le mieu reste quand même d'inclure la ressource manifest à son programme.
C'est chiant d'avoir le .exe.manifest à coté de son prog !
Utilisateur anonyme
13 sept. 2003 à 18:54
C'est bien mais, tu dis que c'est util pour ne pas revoir tout les controls un par un, mais si seulement l'on a qu'une form !
J'ai un projet avec une dizaine de form, et ton truc ne s'applique qu'a la premiere qui est pour moi une mdi, donc inutile...
Donc j'ai du revoir le flatstyle de tt les bouton, groupbox et combobox, dommage que les numericupdown n'ait pas un style xp, car sous windows il en existe bien avec style xp ...

Enfin c'est bien pour la création du manifest :)
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
13 sept. 2003 à 18:47
Si, XP c'est bien 5.1 :

Major.Version = 5
Minor.Version = 1

Crazyht à dit que Major.Version ne peut pas être supérieur à 5, ce qui est vrai, sinon ce serait Major.Version = 6
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
13 sept. 2003 à 18:22
Message de Crazyht déposé le 18/04/2003 19:21:15
--------------------------------------------------------------------------------

spy166 >> Major version pour le moment ne peut etre superieur a 5 :)

!!!!!!! et XP c koi ? c pas 5.1 par hasard ?!
tnardoux Messages postés 1 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 16 juin 2003
16 juin 2003 à 11:37
C'est vraiment niquel !!! Merci de ce source et de la petite modif de spy166....
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
19 avril 2003 à 00:16
lol oui cette fois ca doit etre bon :)
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
18 avril 2003 à 23:23
A euh oui...
C'est vrai. Dans ce cas, tu met "If Environment.OSVersion.Version.Major = 5 And Environment.OSVersion.Version.Minor > 0 Then"

Cette fois, je crois que c'est bon.
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
18 avril 2003 à 19:21
spy166 >> Major version pour le moment ne peut etre superieur a 5 :)
spy166 Messages postés 207 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 29 mars 2006
18 avril 2003 à 18:31
Au lieu de mettre
"If Environment.OSVersion.Version.Major = 5 Then"
met plutôt
"If Environment.OSVersion.Version.Major > 5 Then"
Comme ça, pas de problèmes...
cs_xtof Messages postés 48 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 13 décembre 2007
17 avril 2003 à 08:31
Tu as raison, bien que j'avais précisé dans mon code que je ne savais pas si cela était correct.

Après recherches sur MSDN, j'ai trouvé que l'on pouvait utiliser la fonction GetVersionEx.

Et donc déterminer la version de Windows à coup sûr :

5.0 = Windows 2000
5.1 = Windows XP
5.2 = Windows Server 2003
cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
16 avril 2003 à 16:43
A titre indication ton test Version.Major = 5 n'est pas correct puisque Windows 2000 renvoi 5 aussi (5.0) et XP (5.1) :)
gwiwi Messages postés 127 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 4 janvier 2007 1
14 avril 2003 à 13:56
Super bien.

Simple (encore faut il le savoir !!!!) mais tres efficace ....

BRAVO
cs_xtof Messages postés 48 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 13 décembre 2007
14 avril 2003 à 13:11
Argh, ben je l'ai écrit tout seul... ;o)

Je vais regarder pour VB6 mais je crois qu'il y a pas mal de samples ici qui prennent déjà en charge le Style XP.

++,

XtOf
cs_lienrag Messages postés 22 Date d'inscription mercredi 4 décembre 2002 Statut Membre Dernière intervention 3 février 2005
14 avril 2003 à 12:55
PAs mal du tout, tu a trouve ca ou ?
J'ai vu un truc comme ca sous delphi 7 .
Et sous vb6 possible ou pas ?
Rejoignez-nous