2017-03-22 4 views
0

コントロールページに、4つの画像を4つのラベルで表示する方法があります。私が達成しようとしているのは、ページが読み込まれるたびに、対応するラベルがランダムに表示された4つのイメージを持つことです。ラベルの付いたページに表示される画像の順序をランダム化する方法は?

コントロールページには、各ラベルと各イメージの位置が設定されたパネルがあります。どのようにランダム化するのですか? は、これは私が持っているものです。

 Label1.Text = DBTable.WText1; 
     Label2.Text = DBTable.WText2; 
     Label3.Text = DBTable.WText3; 


     Image1.ImageUrl = DBTable.WImage1; 
     Image2.ImageUrl = DBTable.WImage2; 
     Image3.ImageUrl = DBTable.WImage3; 

     Label4.Text = DBTable.CorrectText; 
     Image4.ImageUrl = DBTable.CorrectImage; 

何かアドバイスやヘルプを

+0

を高く評価しているランダムなインデックスでリストから選択、リストに画像を投げますか?何を試しましたか? – Trey

+0

私はランダムメソッドを使って、ラベルや画像タグの末尾にある数字をランダム化しようとしました。例えば、 ランダムrnd = new Random(); int rand = rnd.Next(1、5); これを実装する方法はわかりませんし、私がそうした場合、画像ボタンタグのマークアップは画像を移動するように設定しているので影響を受けることに気付きました。 イメージをリストに入れるにはどうすればいいですか? – Reggie

答えて

0
public partial class RandomImageTest : Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      // Create a list to hold final image information 
      List<ImageData> images = new List<ImageData>(); 

      // Create a temporary list for initial image data 
      List<ImageData> imagesTemp = new List<ImageData>(); 
      Random rnd = new Random(); 

      // Add image data to temporary list 
      imagesTemp.Add(new ImageData() { Label = "Label 1", Path = "//image1.gif" }); 
      imagesTemp.Add(new ImageData() { Label = "Label 2", Path = "//image2.gif" }); 
      imagesTemp.Add(new ImageData() { Label = "Label 3", Path = "//image3.gif" }); 
      imagesTemp.Add(new ImageData() { Label = "Label 4", Path = "//image4.gif" }); 

      // Use a for loop to retrieve a random item from the temporary list 
      // Copy that item to the final list for later use 
      // Remove the used item from the temporary list so that it is not retrieved more than once 
      for (int i = imagesTemp.Count; i > 0; i--) 
      { 
       int rand = rnd.Next(0, i); 
       images.Add(imagesTemp[rand]); 
       imagesTemp.RemoveAt(rand); 
      } 

      // Use the final (randomised) list to set the properties of the four images and labels 
      Label1.Text = images[0].Label; 
      Label2.Text = images[1].Label; 
      Label3.Text = images[2].Label; 
      Label4.Text = images[3].Label; 


      Image1.ImageUrl = images[0].Path; 
      Image2.ImageUrl = images[1].Path; 
      Image3.ImageUrl = images[2].Path; 
      Image4.ImageUrl = images[3].Path; 
     } 

     // A class to store any information regarding an image 
     // Can add 'alt' text etc. if required 
     private class ImageData 
     { 
      public string Label { get; set; } 
      public string Path { get; set; } 
     } 
    } 
+0

ありがとう!あなたが私に与えたものが働いた。私はさらに質問があります:私のデータベースの次の行にこのランダムメソッドを繰り返して、ラベル付きの4つの画像を表示し、異なるランダム化順序を得るにはどうしたらいいですか? – Reggie

+0

上記で使用したコードを、ImageDataのリストを受け入れてランダム化するメソッドに移動し、(ランダム化された)ImageDataのリストを返します。データベースに関しては、データをどのように取得するかに応じて、ハードコードされたラベルのテキストとパスを適切なデータに置き換えるだけです。これは別の方法で実行することもできます。このようにして、必要に応じてメソッドを呼び出すだけで、何度もループすることができます。 –

関連する問題