2010-09-29 29 views
13

Tôi đã nhận thấy các thuộc tính Thẻ có các nút điều khiển. Có thể sử dụng điều này để tham chiếu các đối tượng tùy chỉnh của tôi hay không, tôi nên tránh xa nó vì nó sẽ yêu cầu boxing và unboxing đã được đề cập là không an toàn và không được đề xuất.Sử dụng tài sản Thẻ nào trong .net

TreeNode tn = new TreeNode(); 
CustClass o = new CustClass() 
o.number = 123; 
tn.Tag = o; 

class CustClass 
{ 
    public int number {get; set;} 
} 
+1

Một nơi tốt để bắt đầu: [Tham chiếu MSDN trên thẻ] (http://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.tag.aspx) – NullUserException

+0

Tại sao bạn thẻ mà fora lập trình langauge? hoàn toàn không liên quan. – TomTom

+4

@TomTom - vì mã mà anh ấy cung cấp được viết bằng C#? Ngoài ra, 'net-winforms' là cái quái gì vậy? Hoàn nguyên ... –

Trả lời

30

Mục đích của tài sản Tag là để bạn sử dụng nó cho bất kỳ mục đích nào bạn muốn. Bạn có thể lưu trữ an toàn bất cứ thứ gì trong đó bạn muốn.

Thông lệ là tuyên bố một lớp học được dành riêng để lưu trữ trong thuộc tính Tag (giống như bạn đã thực hiện với CustClass). Nhưng nếu bạn chỉ cần một giá trị trong đó, thì không có gì sai khi lưu trữ trực tiếp int.

Bạn đã đọc bài đánh đấm ở đâu là "không an toàn"? Điêu nay tuyệt đôi không đung. (Một số người cho rằng đó là không hiệu quả, nhưng ngay cả điều đó cũng không đúng.) Hơn nữa, mã của bạn thậm chí không chứa ví dụ về quyền anh. CustClass là loại tham chiếu. Chỉ các loại giá trị được đóng hộp khi được gán cho object.

+4

Unboxing không hiệu quả khi được sử dụng với số lượng lớn, nhưng đối với một int trong một điều khiển nó không thể được nhận thấy. –

2

Tôi không nghĩ rằng đây sẽ là vấn đề quyền anh hoặc gây khó chịu khi sử dụng theo cách bạn muốn. Theo tôi biết, thuộc tính Thẻ đó chỉ dành cho mục đích của lập trình viên, vì vậy bạn có thể sử dụng nó theo cách bạn cần để sử dụng.

Vui lòng xem Control.Tag thuộc tính trên MSDN để tham khảo thêm về cách sử dụng thuộc tính này.

Ví dụ: tôi đã từng sử dụng nó để nhập hướng dẫn cho người dùng trong các ứng dụng Windows Forms. Khi sự kiện điều khiển GotFocus được kích hoạt, các hướng dẫn Label.Text bất động sản được gán giá trị của thuộc tính Thẻ điều khiển của tôi có chứa chuỗi lệnh.

0

Từ liên kết cũng được đề cập bởi những người khác ở đây:

tại https://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag.aspx một lần đọc:

Bất kỳ loại có nguồn gốc từ lớp Object có thể được gán cho tài sản này. Nếu thuộc tính Thẻ được đặt thông qua trình thiết kế Windows Forms , chỉ có thể gán văn bản.

Sử dụng phổ biến cho thuộc tính Thẻ là lưu trữ dữ liệu chặt chẽ được liên kết với điều khiển. Ví dụ: nếu bạn có quyền kiểm soát hiển thị thông tin về khách hàng, bạn có thể lưu trữ Số liệu chứa lịch sử đơn hàng của khách hàng trong thuộc tính Thẻ của điều khiển để dữ liệu có thể được truy cập nhanh chóng.

và tại https://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.tag.aspx một lần đọc:

... ví dụ tạo ra một cây nút gốc để gán các nút cây con đến. A nút cây con cho mỗi đối tượng Customer trong một ArrayList được thêm vào nút gốc của cây cũng như nút cây con cho mỗi đối tượng Order được gán cho đối tượng Customer. Đối tượng khách hàng được gán cho thuộc tính Thẻ và các nút cây đại diện cho Đối tượng khách hàng là được hiển thị bằng văn bản màu cam.Ví dụ này yêu cầu bạn có một đối tượng Khách hàng và Đơn đặt hàng được xác định là , một điều khiển TreeView trên Biểu mẫu và một ArrayList có tên customerArray chứa đối tượng Khách hàng.

Các vấn đề liên quan