FileSystemWatcherMonitoring

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Hi

    mit einer progressbar bar sieht es blöde aus.

    Habe es jetzt als blinkendes Label dargestellt. Ist dezenter.

    Jetzt noch ne andere Frage zu Listboxen
    In den 4 Listboxen wird mir ja angezeigt ab etwas umbennant, geändert, gelöscht und erstellt wird.
    Jetzt würde ich gerne umsetzen wenn ich mit der rechten maustaste klicke in den Ordner mit der in der Listbox angezeigten pfad gesprungen wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „manni4545“ ()

    VB.NET-Quellcode

    1. Process.Start(System.IO.Path.GetDirectoryName(element))


    Sollte dir helfen. Führe das im MouseClick-Ereignis aus. Besser wäre allerdings, auch für Tastatur, usw. eine derartige Funktion anzubieten. Beachte, dass die Control.ModifierKeys-Eigenschaft zwar die gedrückten Modifizierer Shift, Alt, Ctrl angibt, diese aber nicht unbedingt Auskunft darüber geben, ob die Taste auch bei der Verarbeitung der Tastatur- und Maus-Ereignisse gedrückt war. D.h. am besten wäre es, für Maus und Tastatur separat Ereignisse zu abonnieren und die entsprechenden Eigenschaften abzufragen.

    Viele Grüße
    ~blaze~

    manni4545 schrieb:

    "element wurde nicht deklariert"
    121 Posts im Forum?
    Da muss natürlich das von Dir in Deiner Form ausgewählte Element hin.
    Das kann z.B. das selektierte Item einer Listbox sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Joa, ich glaub auch.

    VB.NET-Quellcode

    1. Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick
    2. Process.Start(System.IO.Path.GetDirectoryName(element))
    3. End Sub

    Woher soll denn der Compiler wissen, was hier "element" sein soll? Das musst Du dem Compiler schon sagen. Z.B. eben, wie RfG meinte, dass Du da statt "element" eben ListBox1.SelectedItem.ToString() hinschreibst. Oder was anderes passendes. Eben das, was Du konkret drinhaben willst. Da Du was mit ausgewählten ListBox-Elementen machen willst, dann eben sowas wie Process.Start(System.IO.Path.GetDirectoryName(ListBox1.SelectedItem.ToString()))
    Aber am besten vorher noch als erste Zeile vor Process.Start reinschreiben: If ListBox1.SelectedItem Is Nothing Then Exit Sub
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hi @VaporiZed

    Irgendwie klappt das nicht. Stehe hier wie der Ochs vorm Berg :(

    Es soll ja so funktionieren wie im screenshot in der listbox sieht man 2 dateine die umbenannt wurden.
    Jetzt habe ich es vor, auf eine umbenannte datei zu klicken und es soll mir den Dateipfad öffen in dem die umbenannte datei liegt.

    Bekomme aber diese Meldung siehe Screenshot 2
    Bilder
    • monitoring1.jpg

      56,6 kB, 702×424, 107 mal angesehen
    • monitoring2.jpg

      165,01 kB, 1.052×640, 106 mal angesehen
    Tja, und genau da fängt das alte Thema wieder an, dass man CEs (in diesem Fall ne ListBox) nicht als Datenspeicher missbrauchen soll, sondern nur als Datenanzeige.
    Was steht in Deiner ListBox: "Datei- " + Dateipfad + Zusatzinfos.
    Ich vermute mal, dass dies der einzige Ort ist, wo die Dateipfade drin gespeichert sind, richtig? Denn mit dem bisherigen Code wird dann natürlich auch diese komplette Zeile als Parameter für .GetDirectoryName() verwendet. Und für einen Text namens "Datei- C:\Users\manni4545\Desktop\Test.txt geändert am 31.02.2000 23:65" lässt sich schlecht ein Verzeichnisname erstellen, weil die Funktion ausschließlich einen Dateipfad fordert. In Deinem ListBoxItem steht aber deutlich mehr drin. Und es ist nicht Aufgabe (und auch nicht in ihrer Möglichkeit) der .GetDirectoryName()-Funktion, aus einem ellenlangen String sich die Sachen rauszupicken, die es braucht. Was wäre, wenn es 2 Dateipfad enthielt? Soll es da den einen oder den anderen Pfad nehmen? Du musst also in diesem Fall den Parametereingang an die Anforderungen der Funktion anpassen. Und wenn die Dateinamen tatsächlich nur in der ListBox stehen und nicht in irgendeiner (sinnvollen) Variable, dann musst Du eben den Text des jeweiligen ListBoxItems so vor Übergabe an die Funktion .GetDirectoryName() zurechtstutzen, dass da nur noch ein Dateipfad drinsteht. ABER: Nicht das ListBoxItem direkt verändern, sondern:

    VB.NET-Quellcode

    1. Dim CurrentFileText = ListBox1.SelectedItem.ToString()
    2. Dim CurrentFilePath = ... 'in dieser Zeile CurrentFileText so bearbeiten, dass nur noch ein Dateipfad drinsteht.
    3. Process.Start(System.IO.Path.GetDirectoryName(CurrentFilePath))

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Aha. Und Deine Schlussfolgerung daraus bzw. Deine Weiterverarbeitung dieser Daten, damit das passiert, was Du willst, ist wo?
    Nach dem von Dir jetzt gepostetet Code sind die Dateipfade nur noch in der ListBox als zusammengesetzter ListBoxeintrag.
    Unschön. Denn da die gewünschten Daten nun nur noch in zusammengesetzter Form sind (eben bestehend aus "Datei- ", dem Pfad, " umbenannt am: " und dem Zeitpunkt), müsstest Du den Pfad, den Du ja später nutzen willst, entweder aus diesem ListBoxItem wieder rauspuhlen, z.B. mit: Entferne die ersten 7 Zeichen (nämlich "Datei- ") und dann noch die letzten 34 Zeichen ("umbenannt am: 24.12.1913 11:11:11").
    Oder Du erzeugst eine programmweite, sinnvolle Datenstruktur (Klasse, Struct, DataSet), in die Du dann unter anderem in Deiner Fsw1_Renamed-Prozedur Deine konkreten Daten reinpackst. Was der objektorientierte und damit sinnvolle Weg in OO-Sprachen wäre. Es liegt an Dir, das gesagte umzusetzen und nun zu zeigen, dass Du sowas auch ohne unsere Hilfe hinbekommen kannst. Gehört zu den Sprachgrundlagen. Meiner Meinung nach. Das schaffst Du ;)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.