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