Le gras est "en lecture seule" dans VB.NET. Cet article vous explique comment changer cela.
Dans VB6, il était très facile de changer une police en gras. Vous avez simplement codé quelque chose comme Label1.FontBold, mais dans VB.NET, la propriété Bold de l'objet Font pour une étiquette est en lecture seule. Alors, comment voulez-vous le changer?
Modification des propriétés de police dans VB.NET avec Windows Forms
Voici le modèle de code de base pour Windows Forms.
Private Sub BoldCheckbox_CheckedChanged (_
Expéditeur ByVal en tant que système. Objet, _
ByVal e As System. EventArgs) _
Gère BoldCheckbox. CheckedChanged
Si BoldCheckbox. CheckState = CheckState. Vérifié ensuite
TextToBeBold. Police = _
Nouvelle police (TextToBeBold. Police, FontStyle. Audacieux)
Autre
TextToBeBold. Police = _
Nouvelle police (TextToBeBold. Police, FontStyle. Ordinaire)
Fin si
End Sub
Il y a beaucoup plus que Label1.FontBold, ça c'est sûr. Dans .NET, les polices sont immuables. Cela signifie qu'une fois créés, ils ne peuvent pas être mis à jour.
VB.NET vous donne plus de contrôle que vous n'en avez avec VB6 sur ce que fait votre programme, mais le coût est que vous devez écrire le code pour obtenir ce contrôle. VB6 supprimera en interne une ressource de police GDI et en créera une nouvelle. Avec VB.NET, vous devez le faire vous-même.
Vous pouvez rendre les choses un peu plus globales en ajoutant une déclaration globale en haut de votre formulaire:
Privé fBold As New Font ("Arial", FontStyle. Audacieux)
Private fNormal As New Font ("Arial", FontStyle. Ordinaire)
Ensuite, vous pouvez coder:
TextToBeBold. Police = fBold
Notez que la déclaration globale spécifie désormais la famille de polices, Arial, plutôt que d'utiliser simplement la famille de polices existante d'un contrôle spécifique.
Utilisation de WPF
Et WPF? WPF est un sous-système graphique que vous pouvez utiliser avec le .NET Framework pour créer des applications sur lesquelles l'interface utilisateur est basée sur un langage XML appelé XAML et le code est distinct de la conception et est basé sur un langage .NET comme Visual De base. Dans WPF, Microsoft a encore modifié le processus. Voici la façon dont vous faites la même chose dans WPF.
Private Sub BoldCheckbox_Checked (_
Expéditeur ByVal en tant que système. Objet, _
ByVal e As System. Les fenêtres. RoutedEventArgs) _
Gère BoldCheckbox. Vérifié
Si BoldCheckbox. IsChecked = True Then
TextToBeBold. FontWeight = FontWeights. Audacieux
Autre
TextToBeBold. FontWeight = FontWeights. Ordinaire
Fin si
End Sub
Les changements sont les suivants:
- L'événement CheckBox est Checked au lieu de CheckedChanged
- La propriété CheckBox est IsChecked au lieu de CheckState
- La valeur de la propriété est un booléen True / False au lieu du Enum CheckState. (Windows Forms propose une propriété True / False Checked en plus de CheckState, mais WPF n'a pas les deux.)
- FontWeight est une propriété de dépendance du Label au lieu de FontStyle étant la propriété de l'objet Font.
- FontWeights est une classe NotInheritable et Bold est une valeur statique dans cette classe
Ouf!! Pensez-vous que Microsoft a réellement essayé de rendre le tout plus confus?