Ответ 1
Вам нужно создать новый шрифт, используя: newlabel.Font = new Font(fontFamily, size);
Я использую 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);
Вам нужно создать новый шрифт, используя: newlabel.Font = new Font(fontFamily, size);
попробуйте это
newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize);
Label newlabel = new Label();
newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12);
var label1 = new Label();
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10);
Во-первых, чтобы объяснить следующую ошибку:
Свойство или индексатор '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);