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?
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.
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:
Oef !! Denk je dat Microsoft eigenlijk geprobeerd heeft om het meer verwarrend te maken?