Partager via


Gestion des polices pour les utilisateurs de Visual Basic 6.0

Mise à jour : novembre 2007

Cette rubrique compare des techniques de gestion des polices dans Visual Basic 6.0 avec leurs équivalents dans Visual Basic 2008.

Différences conceptuelles

Dans Visual Basic 6.0, les polices sont gérées de deux façons : en tant que propriétés de la police des formulaires et des contrôles ou en tant qu'objet stdFont.

Dans Visual Basic 2008, il existe un seul objet Font : System.Drawing.Font. La propriété Font d'un formulaire ou d'un contrôle prend un objet Font comme un argument.

Définition des propriétés de police

Dans Visual Basic 6.0, les propriétés de police peuvent être définies au moment de l'exécution, soit en assignant un objet stdFont ou en définissant directement les propriétés sur le contrôle. Les deux méthodes sont interchangeables.

Dans Visual Basic 2008, la propriété Font d'un contrôle est en lecture seule au moment de l'exécution. Vous ne pouvez pas définir les propriétés directement. Vous devez instancier un nouvel objet Font chaque fois que vous souhaitez définir une propriété.

Héritage des polices

Dans Visual Basic 6.0, les propriétés de la police doivent être définies individuellement pour chaque contrôle ou formulaire ; l'utilisation d'un objet stdFont simplifie le processus, mais nécessite encore du code.

Dans Visual Basic 2008, les propriétés de la police sont automatiquement héritées de leur parent, sauf lorsqu'elles sont explicitement définies pour l'objet enfant. Par exemple, si vous avez deux contrôles label sur un formulaire et modifiez la propriété de police du formulaire en Arial, la police du contrôle label change également en Arial. Si vous modifiez ensuite la police d'une étiquette en Times Roman, toute modification supplémentaire de la police du formulaire ne substituera pas la police de l'étiquette.

Compatibilité des polices

Dans un souci de compatibilité descendante, Visual Basic 6.0 prend en charge les polices Raster ; Visual Basic 2008 prend en charge uniquement les polices TrueType et OpenType.

Énumération des polices

Dans Visual Basic 6.0, vous pouvez utiliser la collection Screen.Fonts avec la propriété Screen.FontCount pour énumérer les polices écran disponibles.

Dans Visual Basic 2008, l'objet Screen n'existe plus ; pour énumérer les polices disponibles dans le système, vous devez utiliser l'espace de noms System.Drawing.FontFamily.

Remarque :

Visual Basic 6.0 énumère tous les types de polices. Visual Basic 2008 prend en charge uniquement les polices TrueType et OpenType ; les autres types de police ne sont pas énumérés. En outre, Visual Basic 6.0 énumère chaque version de jeu de caractères au sein d'une famille de polices (par exemple, Arial, Arial Baltic, Arial Greek) ; Visual Basic 2008 énumère seulement les familles de polices.

Modifications du code pour les polices

Les exemples de code ci-dessous illustrent les différences entre les techniques de codage dans Visual Basic 6.0 et dans Visual Basic 2008.

Modifications du code pour définir les propriétés Font

L'exemple suivant illustre la définition des propriétés de la police au moment de l'exécution. Dans Visual Basic 6.0, vous pouvez définir directement des propriétés sur un contrôle ; dans Visual Basic 2008, vous devez créer un nouvel objet Font et l'assigner au contrôle chaque fois que vous devez définir une propriété.

' Visual Basic 6.0 
' Set font properties directly on the control.
Label1.FontBold = True
' Create a stdFont object.
Dim f As New stdFont
' Set the stdFont object to the Arial font.
f.Name = "Arial"
' Assign the stdFont to the control's font property.
Set Label1.Font = f
' You can still change properties at run time.
Label1.FontBold = True
Label1.FontItalic = True
' Visual Basic
' Create a new Font object  Name and Size are required.
Dim f As New System.Drawing.Font("Arial", 10)
' Assign the font to the control
Label1.Font = f
' To set additional properties, you must create a new Font object.
Label1.Font = New System.Drawing.Font(Label1.Font, FontStyle.Bold Or FontStyle.Italic)

Modifications du code pour énumérer des polices

L'exemple suivant illustre le remplissage d'un contrôle ListBox avec une liste des polices installées sur un ordinateur.

Remarque :

Visual Basic 6.0 énumère tous les types de polices. Visual Basic 2008 prend en charge uniquement les polices TrueType et OpenType ; les autres types de police ne sont pas énumérés. En outre, Visual Basic 6.0 énumère chaque version de jeu de caractères au sein d'une famille de polices (par exemple, Arial, Arial Baltic, Arial Greek) ; Visual Basic 2008 énumère seulement les familles de polices.

' Visual Basic 6.0 
Dim i As Integer
For i = 0 To Screen.FontCount – 1
   List1.AddItem Screen.Fonts(i)
Next i
' Visual Basic 
Dim ff As FontFamily
For Each ff In System.Drawing.FontFamily.Families
  listBox1.Items.Add(ff.Name)
Next

Mettre à niveau des remarques

Lorsqu'une application Visual Basic 6.0 est mise à niveau vers Visual Basic 2008, tout code de gestion des polices est modifié afin d'utiliser le nouvel objet Font.

L'héritage des polices dans Visual Basic 2008 peut provoquer des modifications involontaires de l'apparence de votre application. Vous devez rechercher dans votre application convertie tout code définissant explicitement une police au niveau du formulaire ou du conteneur et, si nécessaire, changer la police si des contrôles enfants ne doivent pas en hériter.

Lors de la mise à niveau, les polices Raster sont converties dans la police par défaut OpenType, Microsoft Sans Serif. Les caractéristiques de mise en forme telles que le gras ou l'italique ne sont pas conservées. Pour plus d'informations, consultez Seules les polices OpenType et TrueType sont prises en charge.

Si votre application contient le code qui énumère des polices, les polices Raster ne sont pas énumérées dans l'application mise à niveau et les familles de polices sont énumérées au lieu des versions de jeu de caractères.

Voir aussi

Référence

Font

FontFamily.Families

Autres ressources

Contrôles Windows Forms pour les utilisateurs de Visual Basic 6.0