2012-01-18 30 views
5

VB 2008'in ekspresini kullanıyorum ancak bu muhtemelen tüm .net ortamları için geçerlidir.Etiketleri .net içinde yönetme

Sorum hiçbir şey etiketlerle ilgisi var. Etkinlik yok ve metni asla değişmiyor. Sadece metin kutularının ve diğer gizemlerin üzerinde otururlar, böylece kullanıcı her doohickey'in ne için olduğunu bilir. Bu onların işi. Basit. Hiçbir kod yok. (Form tasarımcısı tarafından yazılmış kod dışında.)

yüzden onları BİRÇOK orada lanetlenirsen Sorunum var! Uygulamamda aynı formda birden çok sekme var ve her sekmenin çok sayıda nesnesi var ve her birinin ilişkili bir etiketi var. Onları asla adından sıkmadığım için, şimdi Label224 isminde bir etiketim var. Bu doğru, 224 etiket! Saçmalanıyor. Özellikler penceresini görüntülediğimde, bazen aşağı açılır menü kullanarak bir nesneyi isme göre seçmek isterim ve çok fazla kaydırma yaparlar.

SORU: isimsiz etiket sayısının çokluğu (veya kod başvuruda bulunulan nesne her türlü) gelişimi sırasında daha az rahatsızlık verici hale getirmek için bir yol var mı?

Bunları kod olarak yükleyebilirim. Bu iyi olurdu, ancak konumlandırmanın doğru olup olmadığını görmek için kodu çalıştırma denemesi ve hatası olmadan grafiksel olarak ortaya koymak güzel.

cevap

4

Birkaç şey.

Seti false her etiketin GenerateMember özelliği:

label1.GenerateMember = False 

Bu kod görünümü açılan kutular ve intellisense görünmesini Etiketi önleyecektir.

Bunun dışında, yalnızca çok fazla denetime sahipsiniz.

Sen bu durumda, ayrı bir usercontrol içine şeyler her sekmeyi taşımak için deneyebilirsiniz, ve sonra sadece her sekme için tek bir usercontrol yüklüyorsunuz, "sekmeleri" sözü. Kontrol sayısını azaltmaz, ancak biraz daha yönetilebilir hale getirir.

bir etiketin diğer "iş" sekme sırasındaki sonraki kontrol için anımsatıcı kontrol aktivasyonu sağlamaktır. Bunu kullanmıyorsanız, "aldatma" yı deneyebilir ve hep birlikte etiketlerden kurtulabilir ve konteynerin boya etkinliğindeki her kontrolün yanındaki etiketi "boyayabilirsiniz". Etiketin görüntüsünü bir kontrolün etiket özelliğine koyabilir ve üzerine boyayabilirsiniz. Mutlaka en büyük öneri değil.

Örnek: Bitişik Açıklama İçeren TextBox denetimleri bir sürü varsa

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 benim cevaptır. İster inanın ister inanmayın ne yapar. Teşekkürler, bu şimdi değiştiriciler özelliği hakkında bilgi sahibi olmamı sağlıyor. .NET'te kendim öğreniyorum, (VB6'dan geliyorum) ve her gün daha çok şey öğreniyorum. – PaulOTron2000

3

, TextBox ve Label hem oluşan bir usercontrol yaratabilir. Görünümü özelleştirmek için istediğiniz özellikleri ekleyebilirsiniz.

enter image description here

Bu

böyle bir ortak UI kalıptır, gerçekten VS böyle bir kumanda ile gelmesi gerektiğini düşünüyorum.

Ayrıca, sadece iki yerine, her düzenleme alanı için eklenecek bir kontrole sahip çünkü daha hızlı yeni biçimler yaratmak anlamına gelir.İşte

bir usercontrol başka bir örnek Ben - bu sadece iki etiketleri olacaktır, ancak prensip aynıdır:

enter image description here

Burada

o tek form üzerinde birkaç kez kullanılıyor:

Bunun yerine forma 18 etiket enter image description here

, benim usercontrol 9 örneği var.

+0

Ben looooong zaman önce hatırlamak gibi görünüyor, MS Access erken sürüm etiketi metin kutusu ilişkilendirilmiş olduğu bir veritabanı alanının adı varsaymak ile, böyle bir form üzerinde metin kutularının içeren etiketleri ilişkilendirmek geliştirici izin verecek. Access hakkında çok fazla arzu edildi, ancak bu özellik anlamlı. – PaulOTron2000

+0

Ben bir his VB aynı girmiş olabileceğini var. Ama ben 15 yıldır VB kullanmadım, bu yüzden hayal edebiliyordum. –

+0

VB1'de olmadığı sürece. VB1'i atladım ama VB2'den VB6'ya kadar her sürümü kullandım. (Onun günü oldukça etkileyiciydi bu daha sonra QuickBasic için üzerine GW Basic başlayarak.) Aman gawd Yaşlanmışım! Ve sanırım oldukça basit olduğumu söyleyebilirsin. – PaulOTron2000