FontStyle syntaxe [Résolu]

Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
- 30 avril 2012 à 01:23 - Dernière réponse :
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
- 1 mai 2012 à 18:43
Bonjour,

Un petit probleme de syntaxe pour le FontStyle:

' Get the Font
Dim aName As String = "Verdana"
Dim aSize As Single = 18
Dim aStyle As String = "italic"
' myLabel.Font = New Font(aName, aSize, aStyle)
myLabel.Font = New Font(aName, aSize, CType([Enum].Parse(GetType(FontStyle), aStyle), FontStyle))


Pour info, ca marche, mais y-a-t-il plus simple que 'CType([Enum].Parse(GetType(FontStyle), aStyle), FontStyle)'?


J'ai essaye sans succes:
Dim aStyle As FontStyle = CType("italic", FontStyle)
myLabel.Font = New Font(aName, aSize, aStyle)

Alors que ce code ci-dessous marche:
myLabel.Font = New Font(aName, aSize, FontStyle.Italic)


Je suis un peu perdu au niveau de la syntaxe.
Merci,

A+
JLuc01
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
30 avril 2012 à 07:34
3
Merci
Bonjour,
ton premier essai, qui utilise une chaîne de caractères pour le style ne correspond pas à ce qu'attend VB.Net (un flag)
aStyle = "italic"
n'est pas du tout pareil à
aStyle = FontStyle.Italic
je ne connais pas VB.Net et ne sais donc pas quels sont les types de FontStyle.Italic, FontStyle.Bold, etc ...
Il me semble toutefois que j'essaierais de le déterminer (par des messageboxes), puis de me servir directement de leur valeur (probablement booléenne)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
30 avril 2012 à 14:55
3
Merci
Bonjour,

Pour le comprendre, il faut l'exploser :
CType(
[Enum].Parse(
GetType(
FontStyle
), 
aStyle
), 
FontStyle
)


Dans le bloc le plus profond (GetType), tu récupères le type correspondant à l'énumération.
Dans le bloc Parse, tu demandes à .NET de rechercher la valeur de l'énumération correspondants à la chaine.
Et enfin de CType, permet de typer correctement la sortie (Car le Parse est commun à toutes les énumérations).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
1 mai 2012 à 14:21
3
Merci
Bonjour,

CInt(GetType(FontStyle), aStyle)
Tout simplement parce que un entier ne peut pas avoir d'autre format que des nombres.
Donc, pour utiliser un nom, il faut impérativement faire appel à un enum.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
30 avril 2012 à 02:48
0
Merci
Bonjour,

Si tu veux conserver le texte pour définir le style, je ne vois pas d'autres choix.
Tu peux, je pense, tout regrouper dans une fonction :
MaFonction("italic")

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
30 avril 2012 à 11:01
0
Merci
Bonjour,

En fait, je recupere le string "italic" d'un fichier XML et je veux donc l'utiliser.

NHenry, merci pour cette confirmation. Si je n'aime pas trop ce code, c'est simplement que j'ai un peu de peine a le comprendre.
Peut-etre moins maintenant.

ucfoutu, merci pour les precisions.
En fait, le flag est egal a ([Enum].Parse(GetType(FontStyle), aStyle) = 2, si je comprends bien.
Je crois que ce flag peut prendre des valeurs numeriques: 1(regular), 2(italic), 3(bold)... d'ou le [enum].
Je ne suis pas sur de ce que fait le Parse, que j'utilise rarement, voir jamais.

Le coup des MsgBox, c'est une bonne idee (a essayer ce soir), et a se souvenir a l'avenir.

Si toutefois, vous pouvez confirmer ou pas mes explications a propos de ce code ou me donner plus d'explication sur ce morceau de code, ce serait genial.
Je vais rejeter un oeil dans MSDN, peut-etre que je trouverais ce que je cherche.
Merci a tout les deux,

A+
JLuc01
Commenter la réponse de cs_JLuc01
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
30 avril 2012 à 11:11
0
Merci
Pourquoi ne "transposes-tu tout simplement pas, genre :
select case aStyle
  case "italic"
    bstyle = FontStyle.Italic
  case "bold"
    bstyle = FontStyle.Bold
  case "regular"
    bstyle = FontStyle.Regular
  '...
end select
myLabel.Font = New Font(aName, aSize, bstyle)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
30 avril 2012 à 15:45
0
Merci
Salut

Dim aStyle As System.Drawing.FontStyle
aStyle = FontStyle.Regular
TextBox1.Font = New Font(aName, aSize, aStyle)
Commenter la réponse de cs_ShayW
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
1 mai 2012 à 00:51
0
Merci
Bonsoir,

shayW, en fait la variable 'aStyle' contient uniquement 'Regular' (variable provenant d'un fichier XML). Donc, le code de ucfoutu semble le plus approprie. Ceci dit, mon code de depart est probablement le plus simple finalement. Pas besoin de tout reinventer quand c'est disponible en VBnet.

Mon probleme etait plus la comprehension de ce code, et je crois que NHenry l'explique tres bien en explosant ce code.

Toutefois, une derniere question concernant ce code avant de fermer ce post: pourquoi ne peut-on pas ecrire la ligne A ci-dessous au lieu de la ligne B?

A) aStyle = CType(CInt(GetType(FontStyle), aStyle), FontStyle) 'Ne marche pas!
B) aStyle = CType([Enum].Parse(GetType(FontStyle), aStyle), FontStyle)


Car finalement, ([Enum].Parse(GetType(FontStyle), aStyle) est egal a un nombre (1 pour Regular...) si j'ai bien compris: nombre ou integer ou single ou flag???
Ou peut-etre 'Integer.Parse(...' ferait l'affaire apres tout (non teste).

A+
JLuc01
Commenter la réponse de cs_JLuc01
Messages postés
208
Date d'inscription
samedi 17 janvier 2009
Dernière intervention
5 mars 2013
1 mai 2012 à 18:43
0
Merci
Bonjour,

OK. Merci pour ces dernieres explications.
Je crois que je comprends mieux maintenant la syntaxe de ce code.

A+
JLuc01
Commenter la réponse de cs_JLuc01

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.