2016-03-19 20 views
2

Listedeki her nesne için bir Resim Kutusu ve Etiketler oluşturun Sabit bir kaynaktan müzik albümleri araması yapan bir program oluşturuyorum ve bir sonuç listesini bir JSON olarak döndürür. Bu nesneyi yok etmeyi öğrendim bu yüzden C# 'da kullanılabilir, ama mücadele ettiğim bir şey var.Visual C#

Şu anda, el ile birkaç resim kutusu (albüm kapağı için) ve sonuçlar için etiketler (bilgi için) oluşturdum, ancak sonuç sayısı kullanıcı aramasına bağlı olarak değişecektir.

Her bir sonuçtan geçen bir 'for each' döngüsünü yapmanın bir yolu var mı? Daha az veya daha fazla sonuç almak için gerekli resim kutusunu ve etiket kombinasyonlarını programsal olarak oluşturabilir mi?

Soruyorum çünkü uygulamaların bir arama yaptıklarını gördüm ve kesinlikle tüm sonuçların önceden belirlenmiş etiketleri/metin kutularını doldurması mümkün değil.

for each result in results: 
{ 
    Create Picture Box; 
    Create Labels; 
} 
+0

ListView'i kullanabilirsiniz – mohsen

cevap

1

Evet, bunu yapabilirdiniz. kodunuzu bir WinFormForm olduğunu varsayarsak, PictureBox, Label ve Controls.Add kullanın:

foreach (var result in results){ 
    PictureBox pb = ...; 
    //initialize your PictureBox 
    pb.Location = ...; 
    pb.Image = ...; 
    pb.Name = ...; 
    // etc, then add 
    Controls.Add(pb); 

    //similarly for Label 
    Label lbl = ...; 
    //initialize your Label 
    lbl.Location = ...; 
    lbl.Text = ...; 
    lbl.Name = ...; 
    // etc, then add 
    Controls.Add(lbl); 
} 

Bir kısmı dinamik yaratılması Location olduğu dikkatli olmak gerekir. Yeni kontrollerin konumlarının örtüşmediğinden emin olun. Değilse, tek bir kontrol gibi görünebilirler, çünkü çoklu kontroller birbirinin üzerine yerleştirilir.

Not: FlowLayoutPanel içinde PictureBox ve Label koyarak ve/veya büyük bir fikir olacağını bir PictureBox ile UserControl ve üzerine bir Label oluşturarak ya daha sistematik yapmak. Daha sonra, UserControl'u tek tek ya da Form'a ya da FlowLayoutPanel'a eklemeliyiz (lütfen bu cevabın altındaki yorumları okuyun). Benim cevabım basit bir yaklaşım olsa da, sadece şu fikirlere dikkat çekmek için: evet, C# WinForm'da dinamik kontroller oluşturmak mümkündür.

+0

Belki de bunları bir FlowLayoutPanel'e ekleyerek yapmak iyi bir fikirdir. Ayrıca bir PB ve Etiket ile UserControls oluşturmayı düşünürdüm .. – TaW

+1

@TaW ah, evet ... daha sistematik bir şekilde yapmak için, o zaman muhtemelen FlowLayoutPanel koymak için öneriniz, ve/veya UserControl bir PB ve Etiket ile Bunun üzerine harika bir fikir olurdu. Daha sonra, yalnızca UserControl'ü tek tek ya da doğrudan Form veya FlowLayoutPanel'e eklememiz gerekir. Neden olmasın? :) Cevabım basit bir yaklaşım olsa da, sadece fikri belirtmek için. – Ian

+0

Girişiniz için ikinize de çok teşekkür ederim. Çözümlerinizi birkaç gün boyunca test edemeyeceğim, ancak yorumlayabildiğimden, hepsi benim için mantıklı. Bu kadar hızlı ve açık bir şekilde yanıtladığınız için teşekkür ederim. Charlie – Char

İlgili konular