C# Windows窗体C中的图片框和面板#

C# Windows窗体C中的图片框和面板#,c#,winforms,image,panel,picturebox,C#,Winforms,Image,Panel,Picturebox,我需要在表单中显示100个图像,一个在另一个下面 我的想法如下: 在表单中添加了一个面板,在代码中我添加了100个图片框,并为每个图片框分配了我拥有的图像。 现在的问题是我只能看到32个图片框。 为什么?需要更新任何属性…? 下面是我的代码: List<int> bottomlist = new List<int>(); for (int i = 0; i < 100; i++) { PictureBox pic = new PictureBox();

我需要在表单中显示100个图像,一个在另一个下面

我的想法如下:

在表单中添加了一个面板,在代码中我添加了100个图片框,并为每个图片框分配了我拥有的图像。
现在的问题是我只能看到32个图片框。
为什么?需要更新任何属性…?
下面是我的代码:

List<int> bottomlist = new List<int>();
for (int i = 0; i < 100; i++)
{
    PictureBox pic = new PictureBox();
    Image img = //I get image by some code here//
    pic.Image = img;
    pic.Size = img.Size;
    if (i == 0)
        bottomlist.Add(pic.Bottom + 8);
    else
        bottomlist.Add(pic.Bottom + bottomlist[i - 1] +8);
    if (i == 0)
        pic.Top = 8;
    else
    {
        pic.Top = bottomlist[i - 1] + 8;
    }
    pic.Left = (panel1.ClientSize.Width - pic.Width) / 2;
    panel1.Controls.Add(pic);
}
List bottomlist=新列表();
对于(int i=0;i<100;i++)
{
PictureBox pic=新PictureBox();
Image img=//我在这里通过一些代码获得图像//
pic.Image=img;
图片尺寸=图像尺寸;
如果(i==0)
底部列表。添加(图底部+8);
其他的
添加(图底部+底部列表[i-1]+8);
如果(i==0)
图:Top=8;
其他的
{
pic.Top=底部列表[i-1]+8;
}
pic.Left=(panel1.ClientSize.Width-pic.Width)/2;
面板1.控件。添加(pic);
}

我获取了您的代码并运行了它,但遇到了与您类似的问题:我只看到了8幅图像

然后我想起,面板需要手动将
AutoScroll
定义为true,否则看起来图像就少了。现在我可以看到所有这些:

代码与您的相同,只添加了

     this.panel1.AutoScroll = true;
如果需要调整图片大小,请尝试。它基本上是说要做:

public static Image resizeImage(Image imgToResize, Size size)
{
   return (Image)(new Bitmap(imgToResize, size));
}

yourImage = resizeImage(yourImage, new Size(50,50));

我想是关于memory@developerCoder--好的,当我向下滚动时,我将尝试清除顶部的图像。两个if都在I==0上,为什么不合并它们?您是否在面板中启用了AutoScroll?@回答是的,我保留了一个断点并检查了。。。它迭代了100次FRND,我将Autoscroll设置为true,但我所有的图像都有1056px的高度,所以你有很多东西要滚动@乌西斯特拉斯。我想知道你在问什么是的。!就这样。。。你在上面用了一些iceon大小的图片,我用的是860*1056每个100个,然后你需要缩小它们,这是一个完全不同的问题,让我用谷歌搜索一下@UthistranS。如果你想显示100个大图片,我建议你一次只显示10个,当用户通过10个@UthistranS时,让他移动到另一个页面。