Jeg har lige bikset lidt kode sammen:
Jeg har lavet en form med en kombobox til at vælge drev [cb_drev], en textbox til at vælge karakterer at sammenligne med [tb_ind] og en listbox til resultaterne [listBox1].
Først indsættes følgende variabler som globale variabler der er tilgængelige for alle medlemmer af klassen.
private string trigger;
private int count;
trigger bruges til tekstboksens indhold.
count er længden af chars den skal sammenligne med, altså det antal karakterer der er indtaster i tekstboksen (hvis intet indtastes listet alle dirs).
I form1.load listes drevene i cb_drev og det første drev markeres:
string[] drives = System.IO.Directory.GetLogicalDrives();
foreach (string drive in drives)
{
cb_drev.Items.Add(drive);
}
cb_drev.SelectedIndex = 0;
Ved button1_click udføres følgende kode:
listBox1.Items.Clear();
trigger = tb_ind.Text;
count = trigger.Length;
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(cb_drev.SelectedItem.ToString());
test(dir, trigger);
Listboksen cleares først for at gøre plads til nye resultater. Derefter sættes trigger til tekstboksens tekst og count initieres. Herefter initieres der en instans af System.IO.DirectoryInfo, som skal bruges til at gennemløbe mapperne på drevet. Til sidst køres følgende metode:
private void test(System.IO.DirectoryInfo dir, string ind)
{
string tmp = "";
try
{
foreach (System.IO.DirectoryInfo g in dir.GetDirectories())
{
tmp = g.FullName;
if (ind.Length != 0)
{
try
{
if (tmp.ToLower().Substring(3, count) == ind.ToLower())
listBox1.Items.Add(g.FullName);
}
catch
{
continue;
}
}
else
{
listBox1.Items.Add(g.FullName);
}
}
}
catch
{
MessageBox.Show("Der kan ikke læses fra drevet!");
}
}
Du kan hente en kopi af hele vs2005 projektet herunder:
http://aspdotnet.dk/ExpTilTest.zipVh Nicki