15

我正在使用 Visual Studio 2010 构建一个非常简单的表单。除了我需要在表单上动态绘制标签外,一切都很好。我可以绘制标签,但是当我尝试更改newlabel.Font.Size属性时,出现此错误:

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

这是什么意思,我该如何解决?这是我的第一个 C# 程序,所以如果我正在做一些非常愚蠢的事情,请放慢我的脚步。

这是我绘制标签的代码:

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);
4

5 回答 5

25

您必须使用以下方法创建新字体:newlabel.Font = new Font(fontFamily, size);

于 2013-08-06T13:30:58.370 回答
12

尝试这个

newlabel.Font = new Font(newlabel.Font.FontFamily, Fontsize);
于 2013-08-06T13:32:18.657 回答
3
Label newlabel = new Label();

newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12);
于 2013-08-06T13:34:17.583 回答
2

首先,解释以下错误:

无法将属性或索引器“System.Drawing.Font.Size”分配给 - 它是只读的

这是关于变量可访问性的编译时错误。在您的示例中,System.Drawing.Font.Size无法修改,因为Font类中的属性声明为public float Size { get; }. 您可以通过右键单击Size并单击“转到定义”来查看此内容。

上面显示的属性声明描述了一个名为 Size 的浮点值,它有一个公共的“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);
于 2017-03-14T17:50:04.877 回答
1
var label1 = new Label();
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10);
于 2016-02-06T12:32:44.257 回答