【问题标题】:populate PictureBox with Images using Foreach loop使用 Foreach 循环用图像填充 PictureBox
【发布时间】:2012-11-07 05:27:59
【问题描述】:

在我的项目中,我收集了图片框和填充的 ImageList。我想使用foreach Loop 用 ImageList 中的每个图像填充每个图片框。我知道如何使用 For 循环,但我不知道如何使用 foreach 循环。我问这个只是为了知识目的。我认为这可以在 foreach 循环中使用 Linq 来实现,但我是初学者,所以我不知道该怎么做。

我在 for 循环中尝试了以下代码:

        for (intimgcount = 0; intimgcount < intMaxPics; intimgcount++)
        {                
            pbxCollection[intimgcount].Image = imglst.Images[intimgcount];          
        }     

我想在foreach循环中使用的代码是:

        var pbxCollection = new List<PictureBox>();  //PictureBox collection

编辑:如何在表单中设置图片框集合的位置?

我试过了:

        var i = 0;
        foreach (var pbx in pbxCollection)
        {
            pbx.Image = imglst.Images[i++];
            //set location:
            pbx.Width = 100;
            pbx.Height = 100;
            pbx.Location = new Point(0, pbx.Height * i);
            //add to form:
            this.Controls.Add(pbx);
        }  

【问题讨论】:

  • 如果你确实需要一个“i”,你可能最好使用 for 循环。
  • @Carra 不,我不需要“i”(如果不需要的话),它只是在看到答案后进行编辑。我只需要一个我认为我得到的 foreach 循环中的答案,但我不知道如何在表单中设置 PictureBox 的位置。例如 --> 10 个图片框,5 个顶部和 5 个底部。
  • 使用表格布局并将图片框添加到其控件中。
  • @Carra 我需要动态地执行此操作(一切)。我不知道。无论如何,我找到了诀窍。诀窍是首先使用所需的控件设计您的表单并参考 program.cs :)
  • 很高兴看到它有效。您可以通过代码将控件添加到表格布局中,只需将其添加到其控件中即可。如果您想将它们分成两列或更多列,那就更容易了:)

标签: c# .net winforms picturebox imagelist


【解决方案1】:

你可以这样做。

var pbxCollection = new List<PictureBox>();
foreach (Image img in imglst.Images)
{ 
     PictureBox pb = new PictureBox();
     pb.Image = img;
     pbxCollection.Add(pb); 
}     

【讨论】:

  • 感谢您的回复。 VS 向pbxCollection.Add(img); 显示红色涂鸦,并且 pbxCollection 不是图像集合列表。
  • 嘿对不起,也许它正在工作。我没有将位置设置到表单上的图片框(刚刚声明)。你知道如何设置它们吗?
  • 您必须更改每个图片框的位置,您可以通过 pb.Left = 10; 设置它pb.Top = 10;
  • 您还需要设置图片框的大小,如 pb.Width = 50; pb.Height = 50;
  • @Adil 仍未加载。请看我的编辑。很抱歉有研讨会回复晚了。
【解决方案2】:

使用变量来增加集合的索引:

var i = 0;
foreach (var pbx in pbxCollection)
{
    pbx.Image = imglst.Images[i++];
    //set location:
    pbx.Location = new Point(0, pbx.Image.Height * i);
    //add to form:
    this.Controls.Add(pbx);
}

【讨论】:

  • 嘿对不起,也许它正在工作。我没有将位置设置到表单上的图片框(刚刚声明)。你知道如何设置它们吗?
  • 仍未加载。请看我的编辑。很抱歉有研讨会迟到了。
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 2022-11-11
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多