2013-08-06 54 views
14

Tôi đang sử dụng Visual Studio 2010 để tạo một biểu mẫu rất đơn giản. Tất cả hoạt động tốt ngoại trừ tôi cần phải tự động vẽ một nhãn lên biểu mẫu. Tôi có thể vẽ nhãn, nhưng khi tôi cố gắng và thay đổi các thuộc tính newlabel.Font.Size, tôi nhận được lỗi này:Không thể thay đổi cỡ chữ của nhãn trong C#

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

không bình này và làm thế nào tôi có thể sửa chữa gì nó? Đây là chương trình C# đầu tiên của tôi, vì vậy hãy cắt cho tôi một số slack nếu tôi đang làm một cái gì đó thực sự ngu ngốc.

Đây là mã của tôi để vẽ nhãn:

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

Bạn có lẽ sẽ cần phải tạo ra một mới 'Font' với kích thước' 72' và mọi thứ khác sao chép từ 'newlabel.Font' (tức là phông chữ hiện tại). –

Trả lời

24

Bạn phải tạo một phông chữ mới sử dụng: newlabel.Font = new Font(fontFamily, size);

+0

Hoạt động! Cảm ơn bạn :) – imulsion

11

thử này

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

Cũng là một câu trả lời tuyệt vời, cảm ơn! – imulsion

3
Label newlabel = new Label(); 

newlabel.Font = new System.Drawing.Font(l.Font.FontFamily.Name, 12); 
1
var label1 = new Label(); 
label1.Font = new Font(new FontFamily(System.Drawing.Text.GenericFontFamilies.Serif), 10); 
1

Thứ nhất , để giải thích lỗi sau:

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

Đây là lỗi biên dịch về khả năng truy cập của biến. Trong ví dụ của bạn, không thể sửa đổi System.Drawing.Font.Size vì thuộc tính trong lớp Font được khai báo là public float Size { get; }. Bạn có thể xem điều này bằng cách nhấp chuột phải Size và nhấp vào " Đi tới định nghĩa".

Tuyên bố thuộc tính được hiển thị ở trên mô tả giá trị nổi gọi là Kích thước có phương thức 'getter' công khai - nghĩa là bạn có thể truy xuất giá trị từ thuộc tính đó.
Nó không có 'setter' tài sản mà làm cho sửa đổi không thể.

Vì không thể thay đổi thuộc tính, bạn cần phải tạo Font mới bằng cách thay đổi thuộc tính Font thành một cái gì đó như new Font("Times New Roman", 12.0f);. Hãy xem MSDN documentation sau đây cung cấp tất cả các hàm tạo khác nhau cho lớp Font.

Một ví dụ làm việc được hiển thị dưới đây thuận tiện cho bạn:

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); 
Các vấn đề liên quan