C# 在Visual C中为列表中的每个对象创建图片框和标签#

C# 在Visual C中为列表中的每个对象创建图片框和标签#,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我正在创建一个程序,从固定来源搜索音乐专辑,并以JSON格式返回结果列表。我已经成功地学会了反序列化这个对象,这样它就可以在C#中使用,但有一件事我正在努力解决 目前,我已经为结果手动创建了几个图片框(用于相册艺术)和标签(用于信息),但是结果的数量必然会根据用户搜索的不同而有所不同 是否有一种方法可以为每个经过每个结果的”循环执行“”,并且可以通过编程创建必要的图片框和标签组合,以满足更少或更多的结果 我这样问是因为我见过应用程序执行搜索,而且所有的结果肯定不能只是填充预设标签/文本框 for

我正在创建一个程序,从固定来源搜索音乐专辑,并以JSON格式返回结果列表。我已经成功地学会了反序列化这个对象,这样它就可以在C#中使用,但有一件事我正在努力解决

目前,我已经为结果手动创建了几个图片框(用于相册艺术)和标签(用于信息),但是结果的数量必然会根据用户搜索的不同而有所不同

是否有一种方法可以为每个经过每个结果的”循环执行“
”,并且可以通过编程创建必要的图片框和标签组合,以满足更少或更多的结果

我这样问是因为我见过应用程序执行搜索,而且所有的结果肯定不能只是填充预设标签/文本框

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

是的,你可以这么说。假设您的代码位于
WinForm
表单中,请使用
PictureBox
标签和
控件。添加

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);
}
在动态创建中需要注意的一个部分是
位置
。确保新控件的位置不重叠。如果不是,它们可能看起来像单个控件,因为多个控件彼此重叠


注意:要更系统地执行此操作,将
PictureBox
标签
放在
FlowLayoutPanel
中,和/或使用
PictureBox
标签
创建
UserControl
将是一个好主意。然后我们只需要逐个添加
用户控件
,可以直接添加到
表单
流程布局面板
(请阅读下面的注释)。不过,我的回答是一种过于简单的方法,只是想指出这样一个想法:是的,可以在C#
WinForm

中创建动态控件,也许将它们添加到FlowLayoutPanel是一个好主意。我也会考虑用PB和标签来创建UserControls…@ TAW啊,是的…要更系统地完成这项工作,那么可能您的建议是,要么放置FlowLayoutPanel,要么在上面添加PB和标签的UserControl是一个好主意。然后我们只需要一个接一个地添加UserControl,直接添加到表单或FlowLayoutPanel。为什么不呢?:)不过,我的回答是一种过于简单的方法,只是为了指出这个想法。非常感谢你们两位的意见。我将无法在几天内测试您的解决方案,但从我的理解来看,这一切对我来说都是有意义的。谢谢你回答得这么快和清楚。Charlie您可以使用ListView