0

我在这个方法上遇到了问题,我正在努力返回已添加到列表中的图像,因此当它完成后,所有已添加的图片都可以显示在我拥有的 PictureBox 上。现在该方法只是添加图像。所以我想要从列表中返回所有图像的方法,这样我就可以简单地在 PictureBox 上显示它们。任何帮助或建议,我将不胜感激

private List<Image> CollectionOfPictures;

public Image ReturnPictures(List<Image> pics)
{
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }
}
4

4 回答 4

0

你为什么不能这样做

public List<Image> ReturnPictures(List<Image> pics)
{
    return  pics;
}
于 2012-12-01T05:37:33.927 回答
0

与我所看到的相比,您有几个不同的选择:

  1. 将您的图像列表公开给正在绘制图像的任何内容(也就是将其公开)
  2. 列表是引用类型,因此如果您不能执行 #1,则按值传递它应该保留添加到其中的任何内容。

或者也许我过度简化了你的问题。在这种情况下,我会要求你重述它。


编辑以回应您的:

你提出的方法不合逻辑。一种获取图像列表同时仅返回一个而不选择返回哪个图像的方法。

我相信你的意思是:

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }
}

可以更好地表示为:

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    return CollectionOfPictures.Concat(pics).ToList();
}

或者直接使用Linq方法一起跳过该方法。

或保留调用之间的列表:

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    return (CollectionOfPictures = CollectionOfPictures.Concat(pics).ToList());
}

并且没有 LINQ:

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }

    return CollectionOfPictures;
}
于 2012-12-01T05:38:13.457 回答
0

如果您要一一显示它们,则可以返回 CollectionOfPictures 的元素。我假设会有一个导航可以在列表中的图片之间来回切换?你可以做类似的事情

int currentIndex = 0
public Image getImage() {
return CollectionOfPictures[currentIndex];
}

public void nextPicture() {
//check if currentIndex < the length
currentIndex++;
}


public void prevPicture() {
//check if currentIndex >0

currentIndex--;
}
于 2012-12-01T05:41:44.373 回答
0

你可以这样做

private List<Image> CollectionOfPictures;

public List<Image> ReturnPictures(List<Image> pics)
{
    CollectionOfPictures = new List<Image>();
    foreach (Image image in pics)
    {
        CollectionOfPictures.Add(image);
    }
    return CollectionOfPictures;
}

或者干脆

public List<Image> ReturnPictures(List<Image> pics)
{
    return  pics;
}
于 2012-12-01T05:47:10.437 回答