0

リストに追加された画像を返すために取り組んでいるこのメソッドに問題があるため、追加されたすべての画像が、私が持っている PictureBox に表示されます。現在、メソッドは画像を追加するだけです。したがって、PictureBox に簡単に表示できるように、List からすべての画像を返すメソッドが必要です。助けやアドバイスがあれば、とても感謝しています

private List<Image> CollectionOfPictures;

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

4 に答える 4

0

それらを 1 つずつ表示する場合は、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

なぜあなたはこれを行うことができません

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

私が見ているものとは異なるオプションがいくつかあります。

  1. 画像を描画しているものに画像リストを公開します (つまり、公開します)。
  2. リストは参照型であるため、#1 を実行できない場合は、リストに追加されたものをすべて保持する必要があります。

または、問題を単純化しすぎているのかもしれません。その場合は、もう一度おっしゃっていただきたいと思います。


あなたに応じて編集します:

あなたが提案する方法は非論理的です。画像のリストを取得し、返す画像を選択せず​​に 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

あなたはこれを行うことができます

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 に答える