C # Как изменить шрифт метки - PullRequest
17 голосов
/ 09 февраля 2011

Форма с меткой и кнопкой «Параметры».При нажатии на кнопку открывается новая форма с двумя переключателями «Font1» и «Font2» и двумя кнопками «Применить» и «Отмена».После выбора одной из переключателей и нажатия кнопки «Применить» метка на первой форме изменит шрифт.Проблема заключается в том, как изменить шрифт, например, с Tahoma на Arial или на любой другой шрифт надписи на этикетке.

Код формы параметров для кнопки «Применить», которая при нажатии вернет dialogresult.ok == trueи измените шрифт метки в первой форме:

private void btnApply_Click(object sender, EventArgs e)
{
    if (radioFont1.Checked)
    {
        mainForm.lblName.Font.Name = "Arial"; 'wrong attempt 
    }
    this.DialogResult = DialogResult.OK;
}

Объявление метки в первой форме, чтобы она была видна второй форме:

public static Label lblName = new Label();

...

private void mainForm_Load(object sender, EventArgs e)
{
    lblName = lblBarName;
}

Ответы [ 4 ]

32 голосов
/ 09 февраля 2011

Font.Name, Font.XYZProperty и т. Д. Доступны только для чтения, поскольку Font является неизменным объектом, поэтому для его замены необходимо указать новый Font объект:

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);

Проверьте конструктор класса Font для получения дополнительных опций.

8 голосов
/ 09 февраля 2011

Вы не можете изменить шрифт после его создания, поэтому вам нужно создать новый:

  mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
4 голосов
/ 09 февраля 2011

Вам необходимо создать новый шрифт

mainForm.lblName.Font = new Font("Arial", mainForm.lblName.Font.Size);
0 голосов
/ 10 сентября 2018

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

- XP SP3 и Win 10 Pro 64

private void SetFont(Form f, string name, int size, FontStyle style)
{
    Font replacementFont = new Font(name, size, style);
    f.Font = replacementFont;
}

Подсказка: замените Form на Label, RichTextBox, TextBox или любой другой относительный элемент управления, который использует шрифты для изменения шрифта на них. Используя вышеуказанную функцию, вы сделаете ее полностью динамичной.

    /// To call the function do this.
    /// e.g in the form load event etc.

public Form1()
{
      InitializeComponent();
      SetFont(this, "Arial", 8, FontStyle.Bold);  
      // This sets the whole form and 
      // everything below it.
      // Shaun Cassidy.
}

Вы также можете, если вам нужна полная библиотека, так что вам не нужно кодировать все внутренние биты, вы можете скачать мою dll с Github.

Github DLL

/// and then import the namespace
using Droitech.TextFont;

/// Then call it using:
TextFontClass fClass = new TextFontClass();
fClass.SetFont(this, "Arial", 8, FontStyle.Bold);

Simple.

...