只在屏幕上显示一张图片

时间:2017-07-17 20:37:12

标签: c# asp.net webforms

使用此代码,我试图将som图片随机播放,但我只能在屏幕上显示一张图片。

有人能告诉我我错过了什么吗? ilist有9个不同的值,但它只是屏幕上显示的第一个值。 所有图片都在文件夹中。

提前致谢。

protected void btnShuffle_Click(object sender, EventArgs e)
{
    //int[] values = {1,2,3,4,5,6,7,8,9 };
    List<int> MyRandomList = Shuffeld();

    List<int> ilist = new List<int>();

    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[0] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[1] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[2] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[3] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[4] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[5] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[6] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[7] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[8] + ".jpg");


}
public static List<int> Shuffeld() {

    List<int> ilist = new List<int>();

    while (ilist.Count < 9)
    {
        Random r = new Random();
        int a = r.Next(1, 10);
        while (!ilist.Contains(a))
        {
            ilist.Add(a);
        }
        }


    return ilist;

}

2 个答案:

答案 0 :(得分:1)

我认为您始终将Attributes["src"]设置为相同的图片对象:img1

如果情况并非如此,你应该使用for ...无论如何,你应该使用for。

编辑:for循环的一个例子。

for (int i = 0; i < 9; i++)
    {
        imgList[i].Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[i] + ".jpg")
    }

(我猜你有一个对象图像列表。)

答案 1 :(得分:0)

您希望显示的每张图片都需要一个图像控件

问题是您在页面上只有一个图片img1。显然,您无法在页面上显示仅有一个图像的九个图像。你需要九个。

最明显的(不一定是最优雅的)修复方法是改变......

    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[0] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[1] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[2] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[3] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[4] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[5] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[6] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[7] + ".jpg");
    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[8] + ".jpg");

...到...

    img1.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[0] + ".jpg");
    img2.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[1] + ".jpg");
    img3.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[2] + ".jpg");
    img4.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[3] + ".jpg");
    img5.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[4] + ".jpg");
    img6.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[5] + ".jpg");
    img7.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[6] + ".jpg");
    img8.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[7] + ".jpg");
    img9.Attributes["src"] = ResolveUrl("~/Stendalen3/gfx/Puslespil/" + MyRandomList[8] + ".jpg");

当然要确保img1img2img3img4img5img6img7img8img9都在页面上定义。

现在,如果你想要一个优雅的解决方案,也许你可以找到一种方法来使用一组图像控件而不是九个单独的控件,或者可能嵌入你的图像控件in a repeater。然后,您可以使用for循环,而不是为每个图像编写一行代码。但这将成为另一个问题的主题。

<强> P.S。

如果您需要以随机顺序生成1到9之间的数字列表,那么真正的快捷方式就是:

Random r = new Random();
var randomList = Enumerable.Range(1, 9).OrderBy( a => r.Next());