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