2012-01-18 37 views
5

Tôi đang sử dụng VB 2008 express nhưng điều này có thể áp dụng cho tất cả các môi trường .net.Quản lý nhãn trong .net

Câu hỏi của tôi phải liên quan đến các nhãn không làm gì cả. Không có sự kiện nào và văn bản của họ không bao giờ thay đổi. Họ chỉ ngồi ở đó phía trên hộp văn bản và gizmos khác để người dùng biết những gì mỗi doohickey là cho. Đó là toàn bộ công việc của họ. Đơn giản. Không có mã nào. (Khác với mã được viết bởi nhà thiết kế biểu mẫu.)

Vấn đề của tôi là có quá nhiều MANY trong số đó! Ứng dụng của tôi có nhiều tab trên cùng một biểu mẫu và mỗi tab có rất nhiều đối tượng và mỗi tab có một nhãn được liên kết. Vì tôi không bao giờ bận tâm đến việc đặt tên cho chúng, bây giờ tôi có một nhãn với tên Label224. Đúng vậy, 224 nhãn! Nó trở nên vô lý. Khi tôi xem cửa sổ thuộc tính, đôi khi tôi muốn chọn một đối tượng theo tên bằng cách sử dụng trình đơn thả xuống và chúng buộc nhiều cuộn.

CÂU HỎI: Có cách nào để làm cho số lượng tuyệt đối các nhãn chưa được đặt tên (hoặc bất kỳ loại đối tượng nào không được tham chiếu trong mã) ít gây khó chịu trong quá trình phát triển không?

Tôi có thể tải chúng trong mã khóa học. Điều đó sẽ ổn, nhưng thật tuyệt khi đặt chúng ra ngoài đồ họa mà không cần dùng thử và lỗi khi chạy mã để xem vị trí có đúng hay không.

Trả lời

4

Một vài điều.

Set sở hữu GenerateMember mỗi nhãn false:

label1.GenerateMember = False 

Điều này sẽ ngăn chặn sự Label xuất hiện trong các hộp combo xem mã và IntelliSense.

Ngoài ra, bạn chỉ có quá nhiều điều khiển.

Bạn đã đề cập "tab", trong trường hợp này, bạn có thể cố gắng di chuyển từng tab nội dung vào một điều khiển người dùng riêng biệt và sau đó bạn chỉ tải một người dùng kiểm soát cho mỗi tab. Nó không làm giảm số lượng điều khiển, nhưng nó làm cho nó dễ quản lý hơn một chút.

"công việc" khác của nhãn là cung cấp kích hoạt kiểm soát ghi nhớ cho điều khiển tiếp theo trong thứ tự tab. Nếu bạn không sử dụng điều này, bạn có thể thử "gian lận" và loại bỏ tất cả các nhãn cùng nhau và "tô" nhãn bên cạnh mỗi điều khiển trong sự kiện sơn của vùng chứa. Bạn có thể đặt hiển thị nhãn trong thuộc tính thẻ của điều khiển và vẽ trên nhãn đó. Không nhất thiết phải là gợi ý lớn nhất.

Ví dụ:

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint 
    For Each c As Control In Me.Controls 
    If c.Tag IsNot Nothing Then 
     TextRenderer.DrawText(e.Graphics, c.Tag.ToString, Me.Font, _ 
          New Rectangle(c.Left - 100, c.Top, 100, c.Height), _ 
          Color.Black, Color.Empty, TextFormatFlags.VerticalCenter) 
    End If 
    Next 
End Sub 
+0

GenerateMember là câu trả lời của tôi. Tin hay không, tôi không biết nó làm gì. Cảm ơn bạn, vì điều này bây giờ dẫn tôi đến tìm hiểu về tài sản Modifiers là tốt. Tôi tự học trong .NET, (đến từ VB6) và mỗi ngày tôi học nhiều hơn. – PaulOTron2000

3

Nếu bạn có rất nhiều các điều khiển TextBox với Nhãn liền kề, bạn có thể tạo một usercontrol trong đó bao gồm cả hai TextBox và Label. Bạn có thể thêm bất kỳ thuộc tính nào bạn thích để tùy chỉnh giao diện.

enter image description here

Đây là ví dụ một mô hình giao diện người dùng thông thường, tôi thực sự nghĩ rằng VS nên đi kèm với một điều khiển như thế này.

Điều này cũng có nghĩa là bạn có thể tạo biểu mẫu mới nhanh hơn vì bạn chỉ có một quyền kiểm soát để thêm cho từng trường chỉnh sửa, thay vì hai.

Dưới đây là một ví dụ về một usercontrol Tôi có - đây chỉ là hai nhãn, nhưng nguyên tắc là như nhau:

enter image description here

Ở đây nó đang được sử dụng nhiều lần trên một hình thức:

enter image description here

Thay vì 18 nhãn trên biểu mẫu, tôi có 9 trường hợp điều khiển người dùng của mình.

+0

Tôi có vẻ nhớ lại thời gian LOOOOONG, phiên bản đầu tiên của MS Access sẽ cho phép nhà phát triển liên kết nhãn với hộp văn bản trên biểu mẫu như vậy, với nhãn mặc định là tên của trường cơ sở dữ liệu có hộp văn bản được liên kết. Phần lớn về Access ít hơn mong muốn, nhưng tính năng này có ý nghĩa. – PaulOTron2000

+0

Tôi có cảm giác VB có thể giống nhau. Nhưng tôi đã không sử dụng VB trong 15 năm hoặc hơn, vì vậy tôi có thể tưởng tượng nó. –

+0

Không trừ khi trong VB1. Tôi bỏ qua VB1 nhưng tôi sử dụng tất cả các phiên bản từ VB2 thông qua VB6. (Bắt đầu với GW Basic, sau đó vào QuickBasic khá ấn tượng trong ngày của nó.) Oh my gawd Tôi già! Và tôi đoán bạn có thể nói tôi khá cơ bản. – PaulOTron2000

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