簡體   English   中英

在 Visual C# 中為列表中的每個對象創建圖片框和標簽

[英]Create a Picture Box and Labels for each object in a list, in Visual C#

我正在創建一個程序,該程序從固定來源搜索音樂專輯,並以 JSON 形式返回結果列表。 我已經成功地學會了反序列化這個對象,所以它可以在 C# 中使用,但是有一件事情我很掙扎。

目前,我已經為結果手動創建了幾個圖片框(用於專輯封面)和標簽(用於信息),但是結果的數量必然會因用戶搜索而異。

有沒有辦法for each結果執行 ' for each ' 循環,並且可以以編程方式創建必要的圖片框和標簽組合,以便滿足更少或更多的結果?

我問是因為我已經看到應用程序執行搜索並且肯定所有結果不能只是填充預設標簽/文本框?

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

是的,你可以這樣做。 假設您的代碼在WinForm Form ,請使用PictureBoxLabelControls.Add

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);
}

在動態創建中需要注意的一個部分是Location 確保新控件的位置不重疊。 如果不是,它們可能看起來像單個控件,因為多個控件相互疊加。

注意:要更系統地執行此操作,將PictureBoxLabel放在FlowLayoutPanel ,和/或創建帶有PictureBoxLabel UserControl將是一個好主意。 那么我們只需要一個一個的添加UserControl ,要么直接添加到Form ,要么添加到FlowLayoutPanel (請閱讀本回答下方的評論)。 不過,我的回答是一種簡單的方法,只是為了指出以下想法:是的,可以在 C# WinForm創建動態控件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM