Zmiana właściwości czcionki w VB.NET

Pogrubienie oznacza „tylko do odczytu” w VB.NET. W tym artykule dowiesz się, jak to zmienić.

W VB6 zmiana czcionki na pogrubioną była bardzo prosta. Po prostu zakodowałeś coś takiego Label1.FontBold, ale w VB.NET właściwość Bold obiektu Font dla etykiety jest tylko do odczytu. Jak to zmienić?

Zmiana właściwości czcionek w VB.NET za pomocą formularzy Windows Forms

Oto podstawowy wzorzec kodu dla formularzy Windows Forms.

Private Sub BoldCheckbox_CheckedChanged (_
ByVal nadawca jako system. Obiekt, _
ByVal e As System. EventArgs) _
Obsługuje BoldCheckbox. CheckedChanged
Jeśli BoldCheckbox. CheckState = CheckState. Sprawdzone wtedy
TextToBeBold. Czcionka = _
Nowa czcionka (TextToBeBold. Czcionka, FontStyle. Pogrubienie)
Jeszcze
TextToBeBold. Czcionka = _
Nowa czcionka (TextToBeBold. Czcionka, FontStyle. Regularny)
End If
Napis końcowy

Jest o wiele więcej niż Label1.FontBold, na pewno. W .NET czcionki są niezmienne. Oznacza to, że po ich utworzeniu nie można ich aktualizować.

VB.NET daje ci większą kontrolę niż masz

instagram viewer
VB6 nad tym, co robi twój program, ale kosztem jest to, że musisz napisać kod, aby uzyskać tę kontrolę. VB6 usunie wewnętrznie jeden zasób czcionki GDI i utworzy nowy. Z VB.NET musisz to zrobić sam.

Możesz zrobić coś bardziej globalnego, dodając globalną deklarację w górnej części formularza:

Prywatne fBold As New Font („Arial”, FontStyle. Pogrubienie)
Prywatne fNormal As New Font („Arial”, FontStyle. Regularny)

Następnie możesz zakodować:

TextToBeBold. Czcionka = fBold

Zauważ, że globalna deklaracja określa teraz rodzinę czcionek, Arial, zamiast po prostu używać istniejącej rodziny czcionek dla jednej określonej kontrolki.

Korzystanie z WPF

Co z WPF? WPF to podsystem graficzny, którego można używać z .NET Framework do tworzenia aplikacji opartych na interfejsie użytkownika w języku XML o nazwie XAML, a kod jest niezależny od projektu i oparty jest na języku .NET, takim jak Visual Podstawowy. W WPF Microsoft ponownie zmienił proces. Oto jak robisz to samo w WPF.

Private Sub BoldCheckbox_Checked (_
ByVal nadawca jako system. Obiekt, _
ByVal e As System. Windows RoutedEventArgs) _
Obsługuje BoldCheckbox. Sprawdzone
Jeśli BoldCheckbox. IsChecked = Prawda wtedy
TextToBeBold. FontWeight = FontWeights. Pogrubienie
Jeszcze
TextToBeBold. FontWeight = FontWeights. Normalna
End If
Napis końcowy

Zmiany są następujące:

  • Zdarzenie CheckBox jest sprawdzane zamiast CheckedChanged
  • Właściwość CheckBox to IsChecked zamiast CheckState
  • Wartością właściwości jest logiczna prawda / fałsz zamiast Enum CheckState. (Windows Forms oferuje oprócz CheckState właściwość True / False Checked, ale WPF nie ma obu).
  • FontWeight jest właściwością zależności Label zamiast FontStyle będącą własnością obiektu Font.
  • FontWeights jest klasą NotInherable, a pogrubienie jest wartością statyczną w tej klasie

Uff!! Czy uważasz, że Microsoft rzeczywiście próbował sprawić, że będzie to bardziej mylące?