Modifica delle proprietà dei caratteri in VB.NET

Il grassetto è “di sola lettura” in VB.NET. Questo articolo spiega come cambiarlo.

In VB6, era semplicissimo cambiare un carattere in grassetto. Hai semplicemente codificato qualcosa di simile Label1.FontBold, ma in VB.NET, la proprietà Bold dell’oggetto Font per un’etichetta è di sola lettura. Allora come si cambia?

Modifica delle proprietà dei caratteri in VB.NET con Windows Form

Ecco il modello di codice di base per Windows Form.

Sub privato BoldCheckbox_CheckedChanged (_
ByVal mittente As System.Object, _
ByVal e As System.EventArgs) _
Gestisce BoldCheckbox.CheckedChanged
If BoldCheckbox.CheckState = CheckState.Checked Allora
TextToBeBold.Font = _
Nuovo carattere (TextToBeBold.Font, FontStyle.Bold)
Altro
TextToBeBold.Font = _
Nuovo carattere (TextToBeBold.Font, FontStyle.Regular)
End If
End Sub

C’è molto di più di Label1.FontBold, Certamente. In .NET, i caratteri non sono modificabili. Ciò significa che una volta creati non possono essere aggiornati.

VB.NET ti dà più controllo di quello che ottieni con VB6 su ciò che sta facendo il tuo programma, ma il costo è che devi scrivere il codice per ottenere quel controllo. VB6 eliminerà internamente una risorsa di carattere GDI e ne creerà uno nuovo. Con VB.NET, devi farlo da solo.

Puoi rendere le cose un po ‘più globali aggiungendo una dichiarazione globale nella parte superiore del modulo:

Carattere privato fBold As New (“Arial”, FontStyle.Bold)
Carattere privato fNormale come nuovo (“Arial”, FontStyle.Regular)

Quindi puoi codificare:

TextToBeBold.Font = fBold

Si noti che la dichiarazione globale ora specifica la famiglia di caratteri, Arial, piuttosto che utilizzare semplicemente la famiglia di caratteri esistente di un controllo specifico.

Utilizzando WPF

Che mi dici di WPF? WPF è un sottosistema grafico che puoi utilizzare con .NET Framework per creare applicazioni in cui l’interfaccia utente è basata su un linguaggio XML chiamato XAML e il codice è separato dal design e si basa su un linguaggio .NET come Visual Basic. In WPF, Microsoft ha cambiato di nuovo il processo. Ecco come fai la stessa cosa in WPF.

Sottotitoli privati ​​BoldCheckbox_Checked (_
ByVal mittente As System.Object, _
ByVal e As System.Windows.RoutedEventArgs) _
Gestisce Bold Checkbox.Checked
Se BoldCheckbox.IsChecked = True Allora
TextToBeBold.FontWeight = FontWeights.Bold
Altro
TextToBeBold.FontWeight = FontWeights.Normal
End If
End Sub

Le modifiche sono:

  • L’evento CheckBox è Checked anziché CheckedChanged
  • La proprietà CheckBox è IsChecked anziché CheckState
  • Il valore della proprietà è un valore booleano True / False anziché Enum CheckState. (Windows Forms offre una proprietà True / False Checked oltre a CheckState, ma WPF non ha entrambe.)
  • FontWeight è una proprietà di dipendenza dell’etichetta invece di FontStyle è la proprietà dell’oggetto Font.
  • FontWeights è una classe NotInheritable e Bold è un valore statico in quella classe

Whew !! Pensi che Microsoft abbia effettivamente cercato di renderlo più confuso?