Изменение свойств шрифта в VB.NET

Жирный шрифт доступен только для чтения в VB.NET. В этой статье рассказывается, как это изменить.

В VB6 было очень легко изменить шрифт на жирный. Вы просто закодировали что-то вроде Label1.FontBold, но в VB.NET свойство Bold объекта Font для метки доступно только для чтения. Так как вы это измените?

Изменение свойств шрифта в VB.NET с Windows Forms

Вот базовый шаблон кода для Windows Forms.

Private Sub BoldCheckbox_CheckedChanged (_
ByVal отправитель как система. Объект, _
ByVal e As System. EventArgs) _
Ручки BoldCheckbox. CheckedChanged
Если BoldCheckbox. CheckState = CheckState. Затем проверил
TextToBeBold. Шрифт = _
Новый шрифт (TextToBeBold. Font, FontStyle. Жирный)
еще
TextToBeBold. Шрифт = _
Новый шрифт (TextToBeBold. Font, FontStyle. Regular)
End If
End Sub

Там намного больше, чем Label1.FontBold, это точно. В .NET шрифты неизменны. Это означает, что после их создания они не могут быть обновлены.

VB.NET дает вам больше контроля, чем вы получаете с VB6 над тем, что делает ваша программа, но цена заключается в том, что вы должны написать код, чтобы получить этот контроль. VB6 внутренне отбросит один ресурс шрифта GDI и создаст новый. С VB.NET вы должны сделать это самостоятельно.

instagram viewer

Вы можете сделать вещи немного более глобальными, добавив глобальное объявление вверху формы:

Частный fBold As New Font ("Arial", FontStyle. Жирный)
Частный fNormal As New Font ("Arial", FontStyle. Regular)

Тогда вы можете код:

TextToBeBold. Font = fBold

Обратите внимание, что глобальное объявление теперь определяет семейство шрифтов Arial, а не просто использует существующее семейство шрифтов одного конкретного элемента управления.

Использование WPF

Как насчет WPF? WPF - графическая подсистема, которую вы можете использовать с .NET Framework для создания приложений, основанных на пользовательском интерфейсе на языке XML под названием XAML, и этот код отделен от проекта и основан на языке .NET, таком как Visual Основные. В WPF Microsoft изменила процесс еще раз. Вот как вы делаете то же самое в WPF.

Частный Sub BoldCheckbox_Checked (_
ByVal отправитель как система. Объект, _
ByVal e As System. Окна. RoutedEventArgs) _
Ручки BoldCheckbox. Проверено
Если BoldCheckbox. IsChecked = True Тогда
TextToBeBold. FontWeight = FontWeights. Жирный
еще
TextToBeBold. FontWeight = FontWeights. Обычный
End If
End Sub

Изменения:

  • Событие CheckBox проверяется вместо CheckedChanged
  • Свойство CheckBox IsChecked вместо CheckState
  • Значением свойства является логическое True / False вместо Enum CheckState. (Windows Forms предлагает свойство True / False Checked в дополнение к CheckState, но WPF не имеет обоих.)
  • FontWeight является свойством зависимости Label вместо FontStyle, являющимся свойством объекта Font.
  • FontWeights - это класс NotInheritable, а Bold - это статическое значение в этом классе.

Уфф!! Как вы думаете, Microsoft действительно пыталась сделать это более запутанным?