private void timer1_Tick(object sender, EventArgs e)
{
DirectoryInfo dir1 = new DirectoryInfo(@"C:\Users\Chocolade\AppData\Local\SatellitesImagesDownloads\SatellitesImagesDownloads\Countries\Israel\");
fi = dir1.GetFiles("*.gif");
foreach (FileInfo finfo in fi)
{
if (fi.Length > 0 && finfo.Length > 0)
{
timer1.Enabled = false;
pictureBox1.Load(finfo.FullName);
listView1.Items[0].Checked = true;
}
}
}
これは、イスラエルのためにうまくいきます。特定のディレクトリgifファイルを最初に検索して残りの部分を続けるにはどうすればよいですか?
それはpictureBox1
にそれをロードすると、この項目のためにlistView1
でCheckBox
をチェックするのディレクトリイスラエルgifファイルを見つけたら、タイマー間隔は100
に設定されています。
しかし今、私はそれを変更して、すべてのサブディレクトリを検索しますが、最初はイスラエルだけを検索したいと思います。イスラエルを見つけて、pictureBox1
にGIFをロードし、CheckBox
をチェックして、他のすべてのサブディレクトリを検索し、サブディレクトリにgifファイルがある場合は、listView1
のチェックボックスをオンにします。
listView1
の項目は国の名前によるものです。
は、今私は、コードを変更するが、まだ私が欲しいものをやっていない:
は、代わりに、それは今の国の下にあるすべてのサブディレクトリを検索するのディレクトリにのみ、イスラエルを検索します。
ここから続ける方法はわかりません。
private void timer1_Tick(object sender, EventArgs e)
{
DirectoryInfo dir1 = new DirectoryInfo(@"C:\Users\Chocolade\AppData\Local\SatellitesImagesDownloads\SatellitesImagesDownloads\Countries\");
fi = dir1.GetFiles("*.gif", SearchOption.AllDirectories);
foreach (FileInfo finfo in fi)
{
if (fi.Length > 0 && finfo.Length > 0)
{
timer1.Enabled = false;
pictureBox1.Load(finfo.FullName);
listView1.Items[0].Checked = true;
}
}
}
なぜタイマーが必要なのですか?結果を見つけるときに 'Invoke'を使ってUIを更新する必要のあるバックグラウンドスレッドの検索のようです。 –
ディレクトリに膨大な数のファイルがない場合:ルートディレクトリとサブディレクトリからすべてのgifファイル名を検索し、好きなときにファイル名のリストを並べ替えてから、タイマーを起動してリストの次の項目を表示し、次の項目のインデックスは最初に0に設定されます)。 – Graffito
複数の* .gifファイルが見つかった場合、ループは最後のものだけをロードします。これは意図されていますか? –