2017-07-17 16 views
0

這個代碼我試圖洗牌索姆圖片,但我只在屏幕上得到一個圖片。獲取屏幕上只有一個圖片

有人能告訴我我錯過了什麼嗎? 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; 

} 

回答

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"); 

過程,並確保img1img2img3,img4,img5,img6,img7,img8img9都在頁面上定義。

現在,如果你想要一個優雅解決方案,也許你可以找到一種方法,使用圖像的陣列控制的,而不是九個單獨控制,或者您的圖片嵌入控制in a repeater。然後,您可以使用for循環,而不是爲每個圖像編寫一行代碼。但那將是一個不同問題的話題。

P.S.

如果您需要以隨機順序生成從1號列表到9,一個真正的快捷鍵,是這樣的:

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

我認爲你總是設置你的Attributes["src"]相同的圖像對象:img1

如果不是這種情況,您應該使用for ...無論如何,您應該使用for。

編輯:循環的一個例子。

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

(我認爲你有對象圖像的列表。)

+0

可能是值得的OP的時間內爲您給出的一個例子循環:) – Porschiey

+0

嗯,你是對的:) –

0

你所有的圖像設置爲img1.Attributes["src"]。由於它們全部被設置爲相同的變量,所以圖像被一遍又一遍地替換,並且它將總是以最後分配的值結束,這不一定是問題的一部分,但它也值得一提你不應該在while循環中創建隨機類的實例。隨機類使用僞隨機數,你可能會看到你不期待的重複。您應該在類中創建一個本地私有變量。有關更多信息,請參閱Random vs. RNGCryptoServiceProvider