Hi Leute;
Ich habe eine Funktion, Desktopsuche, welche auch bestens funktioniert; Falls sie jemand brauchen kann; Einfach kopieren !! Meine Frage kommt unten !!
public void DesktopSuche(string suchoption)
{
try
{
this.Cursor = Cursors.WaitCursor;
string path = search_ort.Text;
this.ergebnisse.View = View.Details;
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path);
if ((dir.Parent.Attributes == FileAttributes.Hidden) || dir.Parent.Attributes == FileAttributes.System)
{
return;
}
DirectoryInfo[] dirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles(suchoption, SearchOption.AllDirectories);
//Aufbau der Listview
ListViewItem lvi;
ListViewItem.ListViewSubItem lvsi;
this.ergebnisse.BeginUpdate(); // Für ein Update schließen
foreach (System.IO.FileInfo fi in files)
{
lvi = new ListViewItem(); // Main Listview
lvi.Text = fi.Name;
lvi.ImageIndex = 2;
lvi.Tag = fi.FullName;
lvi.ToolTipText = fi.FullName;
lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
lvsi.Text = fi.Directory.Name;
lvi.SubItems.Add(lvsi);
lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
lvsi.Text = fi.Length.ToString() + "Bytes";
lvi.SubItems.Add(lvsi);
lvsi = new ListViewItem.ListViewSubItem(); // Listview Subitem
lvsi.Text = fi.Extension.ToString();
lvi.SubItems.Add(lvsi);
lvsi = new ListViewItem.ListViewSubItem();
lvsi.Text = fi.LastWriteTime.ToLocalTime().ToString(); // ListViewSubitem
lvi.SubItems.Add(lvsi);
this.ergebnisse.Items.Add(lvi);
}
this.Cursor = Cursors.Default;
int treffer = files.Length;
search_result.Text += Environment.NewLine + "Suche nach: " + suchoption + " : " + treffer + " Treffer.";
this.ergebnisse.EndUpdate(); // Update Beendet,wieder öffnen
}
catch (System.Exception err)
{
MessageBox.Show("Ein Fehler bei der Desktopsuche ist aufgetreten: "
+ System.Environment.NewLine + err.Message, "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Ich möchte diese Funktion aber noch etwas verbessern und dem Benutzer sagen, an welcher stelle gerade gesucht wird. Z.B. Suche gerade im Verzeichnis ....
Wie mach ich das ? Kann mir da jemand bitte auf die Sprünge helfen ?
---- >
Keine Signatur 😉
Hallo axelfxxx,
wenn du das in [FAQ] Warum blockiert mein GUI? gesagte einhältst, dann kann der Benutzer ja zugucken, wie sich das ListView füllt. Wenn dir das nicht reicht, schreibst du einfach den Namen der aktuellen Datei in ein Label.
herbivore
thx erstmal, aber genau das meine ich gerade. Wo sehe ich den aktuellen Namen der Datei, das würde mir schon viel weiterhelfen ?
---- >
Keine Signatur 😉
Hallo axelfxxx,
diese Frage habe ich, so wie ich sie verstanden habe, schon beantwortet. Verwende ein Label. Damit dessen Aktualisierung klappt, musst du eben [FAQ] Warum blockiert mein GUI? umsetzen.
herbivore
NEIN 😉
Ich habe doch diese Funktion Desktopsuche und ich habe auch schon ein Label dafür vorher gesehen. Wo bekomme ich in meiner Funktion die aktuellen Namen her, nach denen Gesucht wird ? Ich finde einfach den Zeiger nicht, wo sich die Routine gerade befindet. In Welchem Verzeichnis u.s.w.
//Edit Gut wenn ich das in einen eigenen Thread umwandeln muss, wie mach ich dass ? Bin noch etwas neu in dieser Richtung.
---- >
Keine Signatur 😉
Hallo axelfxxx,
Wo bekomme ich in meiner Funktion die aktuellen Namen her, nach denen Gesucht wird ?
axo, gar nicht. GetFiles kehrt ja erst zurück, wenn das gesamte Verzeichnis ausgelesen ist. Das sollte aber bei einem einzelnen Verzeichnis so schnell gehen, dass man da keine Zwischenergebnisse anzeigen muss.
Gut wenn ich das in einen eigenen Thread umwandeln muss, wie mach ich dass ?
Genau das behandelt ja der FAQ-Beitrag.
Bin noch etwas neu in dieser Richtung.
Für den Fall, dass dir bestimmte Grundlagen fehlen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
herbivore
gut, dann andere Frage: Wie lese ich nun die einzelnen Verzeichnisse bei der Suche ab ?
---- >
Keine Signatur 😉
Hallo axelfxxx,
das machst du doch schon mit der foreach-Schleife.
herbivore