Laden...

Desktopsuche

Erstellt von axelfxxx vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.174 Views
axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 16 Jahren
Desktopsuche

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 😉

49.485 Beiträge seit 2005
vor 16 Jahren

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

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 16 Jahren

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 😉

49.485 Beiträge seit 2005
vor 16 Jahren

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

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 16 Jahren

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 😉

49.485 Beiträge seit 2005
vor 16 Jahren

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

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 16 Jahren

gut, dann andere Frage: Wie lese ich nun die einzelnen Verzeichnisse bei der Suche ab ?

---- >
Keine Signatur 😉

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo axelfxxx,

das machst du doch schon mit der foreach-Schleife.

herbivore