Невозможно изменить размер шрифта метки в С#

Я использую Visual Studio 2010 для создания очень простой формы. Все работает отлично, за исключением того, что мне нужно динамически нарисовать ярлык на форме. Я могу нарисовать метку, но когда я пытаюсь изменить атрибут newlabel.Font.Size, я получаю эту ошибку:

Property or indexer 'System.Drawing.Font.Size' cannot be assigned to -- it is read only 

Что это значит и как я могу это исправить? Это моя первая программа на С#, поэтому, пожалуйста, сократите меня, если я делаю что-то действительно глупое.

Вот мой код для рисования метки:

Label newlabel = new Label();
newlabel.Text = "BOOM";
newlabel.Font.Size = 72;//This causes the error
newlabel.ForeColor = Color.White;
newlabel.Location = new Point(250,250);
newlabel.AutoSize = false;
this.Controls.Add(newlabel);

Ответы

Ответ 1

Вам нужно создать новый шрифт, используя: newlabel.Font = new Font(fontFamily, size);

Ответ 2

попробуйте это

newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize);

Ответ 3

Label newlabel = new Label();

newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12);

Ответ 4

var label1 = new Label();
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10);

Ответ 5

Во-первых, чтобы объяснить следующую ошибку:

Свойство или индексатор 'System.Drawing.Font.Size' не может быть присвоен - он только для чтения

Это ошибка времени компиляции относительно доступности переменной. В вашем примере System.Drawing.Font.Size нельзя изменить, поскольку свойство класса Font объявляется как public float Size { get; }. Вы можете просмотреть это, щелкнув правой кнопкой мыши Size и нажав " Перейти к определению".

Объявление свойства, показанное выше, описывает значение float под названием "Размер", которое имеет общедоступный метод "getter", что означает, что вы можете получить значение из этого свойства.
У него нет свойства "setter", которое делает невозможным модификацию.

Поскольку свойство не может быть изменено, вам нужно будет создать новый Font, изменив свойство Font на нечто вроде new Font("Times New Roman", 12.0f);. Взгляните на следующую документацию MSDN, которая предоставляет все различные конструкторы для класса Font.

Ниже приведен рабочий пример:

Label newlabel = new Label {
    Text = "BOOM",
    Font = new Font("Times New Roman", 12.0f),
    ForeColor = Color.White,
    Location = new Point(250, 250),
    AutoSize = false
};
this.Controls.Add(newlabel);