C# 在面板中动态排列对象

C# 在面板中动态排列对象,c#,dynamic,windows-forms-designer,C#,Dynamic,Windows Forms Designer,因此,我从一个网站获取图像,并将它们存储在MostUsedHeroesAndImages中。然后,我试图通过动态创建PictureBox在面板上显示它们。我如何编程,使图片盒的创建从左=0顶部=25开始,然后当显示10个图像(每个图像之间有50个像素)时,它从左=0顶部=200开始,以显示另外10个图像,依此类推,生成一个图像网格?我现在有这个代码,它以一条从左到右的直线显示我的所有图像,它们之间没有间隙。我试着设置一个起点,但它只是将所有的图片存储在彼此的顶部。对于如何在每个图像之间留出间隙,

因此,我从一个网站获取图像,并将它们存储在MostUsedHeroesAndImages中。然后,我试图通过动态创建PictureBox在面板上显示它们。我如何编程,使图片盒的创建从左=0顶部=25开始,然后当显示10个图像(每个图像之间有50个像素)时,它从左=0顶部=200开始,以显示另外10个图像,依此类推,生成一个图像网格?我现在有这个代码,它以一条从左到右的直线显示我的所有图像,它们之间没有间隙。我试着设置一个起点,但它只是将所有的图片存储在彼此的顶部。对于如何在每个图像之间留出间隙,并在显示10个图像时使其跳过一行,我不知道

public void RunMeta()
    {

        foreach(var mostPickedHero in FetchDataFromDota2Site.MostUsedHeroesAndImages)
        {
            PictureBox temp = new PictureBox();
            temp.ImageLocation = mostPickedHero.ImageSource;
            temp.SizeMode = PictureBoxSizeMode.StretchImage;
            temp.Left = temp.Width * panel1.Controls.Count;
         //   temp.Location = new System.Drawing.Point(left, top);
            panel1.Controls.Add(temp);
        }

    } 
您可以使用而不是简单的面板(panel1)。 您只需在PictureBox控件上进行设置,即可形成间隙。 这是一个现成的解决方案,不涉及代码逻辑来包装图片。它也可以在调整面板大小时工作

FlowLayoutPanel的默认行为是从左到右水平放置控件(请参见),并自动换行(请参见)

请记住,当子控件(图片)的数量急剧增加时,FlowLayoutPanel可能会变慢。

这可能会对您有所帮助