Eigenschappen van lettertypen wijzigen in VB.NET

Vet is "alleen-lezen" in VB.NET. Dit artikel vertelt je hoe je dat kunt veranderen.

In VB6 was het doodeenvoudig om een ​​lettertype te wijzigen in vetgedrukt. Je hebt zoiets gecodeerd Label1.FontBold, maar in VB.NET is de eigenschap Bold van het Font-object voor een label alleen-lezen. Dus hoe verander je het?

Eigenschappen van lettertypen in VB.NET wijzigen met Windows-formulieren

Hier is het basiscodepatroon voor Windows-formulieren.

Private Sub BoldCheckbox_CheckedChanged (_
ByVal-afzender als System.Object, _
ByVal e As System.EventArgs) _
Handgrepen BoldCheckbox.CheckedChanged
Als BoldCheckbox.CheckState = CheckState.Checked Dan
TextToBeBold.Font = _
Nieuw lettertype (TextToBeBold.Font, FontStyle.Bold)
Anders
TextToBeBold.Font = _
Nieuw lettertype (TextToBeBold.Font, FontStyle.Regular)
Stop als
Einde Sub

Er is veel meer dan Label1.FontBold, dat is zeker. In .NET zijn lettertypen onveranderlijk. Dat betekent dat zodra ze zijn gemaakt, ze niet kunnen worden bijgewerkt.

VB.NET geeft u meer controle dan u krijgt met VB6 over wat uw programma doet, maar de kosten zijn dat u de code moet schrijven om die controle te krijgen. VB6 zal intern één GDI-lettertypebron verwijderen en een nieuwe maken. Met VB.NET moet u het zelf doen.

U kunt dingen een beetje meer globaal maken door een algemene verklaring bovenaan uw formulier toe te voegen:

Private fBold As New Font ("Arial", FontStyle.Bold)
Privé fNormal As New Font ("Arial", FontStyle.Regular)

Vervolgens kunt u coderen:

TextToBeBold.Font = fBold

Merk op dat de globale declaratie nu de lettertypefamilie Arial specificeert in plaats van eenvoudigweg de bestaande lettertypefamilie van één specifiek besturingselement te gebruiken.

WPF gebruiken

Hoe zit het met WPF? WPF is een grafisch subsysteem dat u kunt gebruiken met het .NET Framework om toepassingen te bouwen waarbij de gebruikersinterface is gebaseerd op een XML-taal genaamd XAML en de code is gescheiden van het ontwerp en is gebaseerd op een .NET-taal zoals Visual Basic. In WPF heeft Microsoft het proces opnieuw gewijzigd. Dit is de manier waarop u hetzelfde doet in WPF.

Private Sub BoldCheckbox_Checked (_
ByVal-afzender als System.Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Handgrepen BoldCheckbox.Checked
If BoldCheckbox.IsChecked = True Then
TextToBeBold.FontWeight = FontWeights.Bold
Anders
TextToBeBold.FontWeight = FontWeights.Normal
Stop als
Einde Sub

De wijzigingen zijn:

  • De CheckBox-gebeurtenis is Gecontroleerd in plaats van CheckedChanged
  • De eigenschap CheckBox is IsChecked in plaats van CheckState
  • De eigenschapswaarde is een Boolean True / False in plaats van de Enum CheckState. (Windows Forms biedt een True / False Checked-eigenschap naast CheckState, maar WPF heeft niet beide.)
  • FontWeight is een afhankelijkheidseigenschap van het label in plaats van FontStyle als eigenschap van het object Font.
  • FontWeights is een klasse NotInheritable en Bold is een statische waarde in die klasse

Oef !! Denk je dat Microsoft eigenlijk geprobeerd heeft om het meer verwarrend te maken?