私がやりたいことは、すべてのディレクトリと各ディレクトリ内のファイルを取得し、それをリストに追加することです。たとえば、リストは次のようになります。
index[0] {[fileinfo リストとここにあるすべてのファイル]}
したがって、各インデックスには、ディレクトリと、このディレクトリのすべてのファイルが含まれます。
私はやろうとしました:
private void getfiles()
{
List<List<FileInfo>> fileList = new List<List<FileInfo>>();
for (int i = 0; i < BackgroundWorkerConfiguration.urlsDirectories.Count; i++)
{
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(BackgroundWorkerConfiguration.urlsDirectories[i]);
fileList.AddRange(di.GetFiles("*.*", System.IO.SearchOption.AllDirectories).Where(x => x.Length > 0));
}
file_array = fileList.OrderBy(x => x.CreationTime).Select(x => x.FullName).ToArray();
//file_array = fileList.OrderByDescending(x => x.CreationTime).Select(x => x.FullName).ToArray();
timer1.Enabled = true;
}
を に変更したList<FileInfo>
のでList<List<FileInfo>>
、リスト内のリストです。
したがって、最終的に、ハードディスクに 5 つのディレクトリがある場合、リストには 5 つのインデックスがあり、各インデックスにはディレクトリのファイルを含むリストがあります。
編集**
これは timer1 ティック イベントです。
private void timer1_Tick(object sender, EventArgs e)
{
try
{
//this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
for (int i = 0; i < file_array.Length; i++)
{
}
if (leave == true)
{
pb.Load(file_array[file_indxs]);
}
else
{
pbs[0].Load(file_array[file_indxs]);
}
file_indxs = file_indxs + 1;
if (file_indxs >= file_array.Length)
{
file_indxs = 0;
}
}
catch
{
timer1.Enabled = false;
}
}
form1コンストラクターで作成した8つのpictureBoxがあります。この場合、タイマー ティック イベントで、画像を最初の pictureBox である pbs[0] に割り当てます。
私がする必要があるのは、ネストされたリストを使用して、各ディレクトリと内部のファイルを pictureBox に割り当てることです。したがって、ネストされたリストの最初のインデックスは、そこにあるファイルの最初の pictureBox pbs[0] に割り当てられ、次にインデックス 1 が pbs[1] に割り当てられます。
したがって、ネストされたリストに 5 つのインデックスがある場合は、5 つの pictureBox に割り当てる必要があります。
すべての画像を pbs[0] に割り当てる代わりに、ネストされたリストを作成したのはそのためです。