无法在C#中更改标签的字体大小

时间:2013-08-06 13:29:14

标签: c# visual-studio-2010

我使用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);

5 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:11)

试试这个

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

答案 2 :(得分:3)

Label newlabel = new Label();

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

首先,解释以下错误:

无法将属性或索引器'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 documentation,它为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);