Il grassetto è "sola lettura" in VB.NET. Questo articolo spiega come cambiarlo.
In VB6, era molto facile cambiare un carattere in grassetto. Hai semplicemente codificato qualcosa del genere Label1.FontBold, ma in VB.NET, la proprietà Grassetto dell'oggetto Font per un'etichetta è di sola lettura. Quindi come lo cambi?
Modifica delle proprietà dei caratteri in VB.NET con Windows Form
Ecco il modello di codice di base per Windows Form.
Sottotitoli privati BoldCheckbox_CheckedChanged (_
Mittente ByVal come sistema. Oggetto, _
ByVal e As System. EventArgs) _
Gestisce BoldCheckbox. CheckedChanged
Se BoldCheckbox. CheckState = CheckState. Controllato quindi
TextToBeBold. Carattere = _
Nuovo carattere (TextToBeBold. Font, FontStyle. Grassetto)
Altro
TextToBeBold. Carattere = _
Nuovo carattere (TextToBeBold. Font, FontStyle. Regolare)
Finisci se
End Sub
C'è molto di più Label1.FontBold, Certamente. In .NET, i caratteri sono immutabili. Ciò significa che una volta creati non possono essere aggiornati.
VB.NET ti dà più controllo di quello che ottieni
VB6 su ciò che sta facendo il tuo programma, ma il costo è che devi scrivere il codice per ottenere quel controllo. VB6 elimina internamente una risorsa di font GDI e ne crea una nuova. Con VB.NET, devi farlo da solo.Puoi rendere le cose un po 'più globali aggiungendo una dichiarazione globale nella parte superiore del modulo:
Private fBold As New Font ("Arial", FontStyle. Grassetto)
Private fNormal come nuovo carattere ("Arial", FontStyle. Regolare)
Quindi puoi codificare:
TextToBeBold. Font = fBold
Si noti che la dichiarazione globale ora specifica la famiglia di caratteri, Arial, anziché semplicemente utilizzare la famiglia di caratteri esistente di un controllo specifico.
Utilizzando WPF
Che dire di WPF? WPF è un sottosistema grafico che è possibile utilizzare con .NET Framework per creare applicazioni su cui si basa l'interfaccia utente su un linguaggio XML chiamato XAML e il codice è separato dal design e si basa su un linguaggio .NET come Visual Di base. In WPF, Microsoft ha nuovamente modificato il processo. Ecco come fai la stessa cosa in WPF.
Private Sub BoldCheckbox_Checked (_
Mittente ByVal come sistema. Oggetto, _
ByVal e As System. Finestre. RoutedEventArgs) _
Gestisce BoldCheckbox. verificato
Se BoldCheckbox. IsChecked = True Quindi
TextToBeBold. FontWeight = FontWeights. Grassetto
Altro
TextToBeBold. FontWeight = FontWeights. Normale
Finisci se
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 entrambi.)
- FontWeight è una proprietà di dipendenza dell'etichetta invece che FontStyle è la proprietà dell'oggetto Font.
- FontWeights è una classe NotInheritable e Bold è un valore statico in quella classe
Wow!! Pensi che Microsoft abbia effettivamente cercato di renderlo più confuso?