List<string>
選択した特定の拡張子を持つすべてのファイルを一覧表示する新しいファイルを作成してみてください。Random
次に、範囲が私たちの値を超えないことを考慮して、特定の範囲内の乱数を取得する新しいクラスを初期化しList<string>.Count
ます。
例
CurrentClicks
それが新しい整数を識別し、MaximumClicks
私たちの最大値であると仮定します
public Form1()
{
InitializeComponent();
button1.Click += new EventHandler(button1_Click); //Link the Click event of button1 to button1_Click
}
const int MaximumClicks = 5; //Initialize a new constant int of value 5 named MaximumClicks
int CurrentClicks = 0; //Initialize a new variable of name CurrentClicks as an int of value 0
以下が適用される場合があります
private void button1_Click(object sender, EventArgs e)
{
if (CurrentClicks < MaximumClicks) //Continue if CurrentClicks is less than 5
{
string FilesPath = @"D:\Resources\International"; //Replace this with the targeted folder
string FileExtensions = "*.png"; //Applies only to .png file extensions. Replace this with your desired file extension (jpg/bmp/gif/etc)
List<string> ItemsInFolder = new List<string>(); //Initialize a new Generic Collection of name ItemsInFolder as a new List<string>
foreach (string ImageLocation in Directory.GetFiles(FilesPath, FileExtensions)) //Get all files in FilesPath creating a new string of name ImageLocation considering that FilesPath returns a directory matching FileExtensions considering that FileExtensions returns a valid file extension within the targeted folder
{
ItemsInFolder.Add(ImageLocation); //Add ImageLocation to ItemsInFolder
}
Random Rnd = new Random(); //Initialize a new Random class of name Rnd
int ImageIndex = Rnd.Next(0, ItemsInFolder.Count); //Initialize a new variable of name ImageIndex as a random number from 0 to the items retrieved count
pictureBox1.Load(ItemsInFolder[ImageIndex]); //Load the random image based on ImageIndex as ImageIndex belongs to a random index in ItemsInFolder
CurrentClicks++; //Increment CurrentClicks by 1
}
else
{
//Do Something (MaximumClicks reached)
}
}
これにより、指定された拡張子に一致する、指定されたフォルダー内のファイルの場所が取得されます。PictureBox
次に、名前のに集められたファイルの場所からランダムなファイルをロードしますpictureBox1
。
ただし、これにより、以前にに追加されたファイルは回避されませんPictureBox
。重複を避けたい場合は、新しいint
アレイを作成するか、適用されたList<int>
すべてのアレイを追加することができますが、管理が簡単なように思われるため、一緒に使用することをお勧めしますImageIndex
PictureBox
List<int>
例
List<int> AlreadyAdded = new List<int>();
redo:
Random Rnd = new Random();
int ImageIndex = Rnd.Next(0, ItemsInFolder.Count);
if (AlreadyAdded.Contains(ImageIndex)) //Continue within this block if the item already exists in AlreadyAdded
{
goto redo;
}
AlreadyAdded.Add(ImageIndex); //Add ImageIndex to AlreadyAdded
ありがとう、
これがお役に立てば幸いです:)