Button mit Verknüpfung und Fehlermeldung

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

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

    Button mit Verknüpfung und Fehlermeldung

    Guten Tag,

    ich habe praktisch 2x Buttons und 1x Textbox.

    Button 1 = Mit dem wähle ich die Datei oder das Verzeichnis aus.

    Textbox = In der Textbox wird der Speicherort des Verzeichnis oder der Datei gespeichert - Also es ist praktisch eine Verknüpfung.

    Button 2 = Soll das Verzeichnis oder die Datei, welches sich in der Textbox befindet öffnen (Verknüpfung).

    Soweit habe ich alles hingekriegt. Und funktioniert auch!

    Für Button 2 habe ich momentan folgenden Code verfasst:

    If (TextBox_Verknüpfung.Text) <> "" Then
    Process.Start(TextBox_Verknüpfung.Text)
    Else
    MessageBox.Show("Bitte wählen Sie Ihr Verzeichnis oder Datei aus!", "Error",
    MessageBoxButtons.OK, MessageBoxIcon.Error)
    End If

    Der Code sagt aus, wenn sich in der Textbox ein "Text" befindet dann öffne diesen, wenn allerdings kein Text sich in der Textbox befindet, dann mache eine Fehlermeldung. Die Fehlermeldung lautet dann: Bitte wählen Sie Ihr Verzeichnis oder Datei aus.

    Nun meine Frage: Ich möchte zusätzlich, wenn sich der Speicherort ändert (Also wenn er die Datei in der Textbox nicht findet) dann soll er bitte auch eine Fehlermeldung schreiben. Wie z.B: "Datei kann nicht geöffnet werden, da diese nicht mehr existiert".

    Über eine Antwort wäre ich dankbar
    :) !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CJ-VB“ ()

    Für all die Arbeiten an Dateien und Verzeichnissen gibt es IO.FileInfo und IO.DirectoryInfo (notfalls(!!!) auch die Funktionen IO.File.Exists, IO.Directory.Exists). Damit kann man problemlos (vor Ausführung irgendeines "kritischen" Codes) testen, ob ein Verzeichnis oder eine Datei überhaupt noch existiert.

    btw:
    1.

    CJ-VB schrieb:

    Der Code sagt aus
    , was der Code eben sagt. Du brauchst ihn nicht zu kommentieren, denn entweder wir erkennen es selbst, oder wir sollten die Finger von dem Thread lassen. Genauso verhält es sich mit Kommentaren im Code selbst. Wenn der Code nicht für sich selbst spricht, ist er zu kompliziert. Und eine Kommentar wird daran nichts ändern, sondern früher oder später lügen. Und zwar wenn kleinere Änderungen vorgenommen werden und leider vergessen wird, den Kommentar anzupassen.
    2. bitte CodeTags verwenden
    3. rot ist den Moderatoren vorbehalten
    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.
    Danke für die Antwort.

    Aber lässt sich das nicht durch eine if-Anweisung lösen?

    Zum Beispiel: Wenn Verzeichnis oder Datei in Textbox nicht existiert, dann melde Fehler?
    @CJ-VB So was:

    VB.NET-Quellcode

    1. If Not IO.File.Exists(DATIPFAD) Then
    2. MessageBox("Fehler")
    3. Exit Sub
    4. End If
    5. ' weiter im Text

    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!

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

    @RodFromGermany erst mal danke für die Antwort.

    Ich habe noch nicht mit IO.File.Exists gearbeitet. Wo finde ich diese bzw. wo oder wie kann ich diese einfügen?

    Ich habe wie oben beschrieben 2x Buttons und 1x Textbox.

    Bitte nochmal um Hilfe. Danke!

    CJ-VB schrieb:

    Wo finde ich diese bzw. wo oder wie kann ich diese einfügen?
    Was genau meinst Du damit?
    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!
    Nö.
    Das ist ein NameSpace:
    System.IO.File...
    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!
    Kann man das auch anders umsetzen ohne io.File?

    Funktionsweise: Wenn Verzeichnis oder Datei in Textbox nicht existiert, dann melde Fehler?

    Ich habe es mit io.File auch gerade probiert, bekomme immer die Fehlermeldung: File ist kein Member von iTextSharp.text.io

    Ich check nicht warum das nicht funktioniert, habe auch gerade einen DIM gesetzt.
    WTF?!? Es geht um den System.IO-Namespace. Also vollqualifiziert: If Not System.IO.File.Exists(DeineDatei) Then MessageBox.Show("Diese Datei existiert nicht.")
    3 Sekunden Google-Suche. Aber das ist auch ein Zeichen dafür, dass die importierten Namespaces etwas falsch eingestellt sind.
    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.

    VaporiZed schrieb:

    dass die importierten Namespaces etwas falsch eingestellt sind.

    Darf ich mal fragen was die Standart Namespaces bei einem Projekt sein sollten?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Tja, das ist wohl projektabhängig. Bei mir sind's inzwischen:
    • System
    • System.Collections.Generic
    • System.Data (für die tDS)
    • System.Linq
    • System.Windows.Forms
    EdR haut dann wohl gern noch einen benutzerdefinierten Import für die VB-ControlChars rein, hab ich mal gelesen. Ich hab die in einer meiner eigenen DLLs drin.

    btw, weil ich es immer wieder im Forum lese: Standard, nicht Standart (was man übersetzen könnte als stehende Kunst)
    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.
    Naja, sowenig wie möglich. Also was du nicht mindestens in jeder 3. Code-Datei benötigst solltest du nicht zum General-Import machen. Sieht bei mir so aus:


    Allerdings seit 2017 scheint der General-Alias: VB6=Microsoft.VisualBasic nicht mehr zu funktionieren.
    Wenn man also ab 2017 sowas haben will, muss mans einzeln über jede Datei drüber-schreiben.
    Wurde bereits gemeldet. Das Schlechte: Es wird als Fehler angezeigt.

    Das Gute: Es funktioniert trotzdem:

    VS2019Pre
    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.

    VaporiZed schrieb:

    WTF?!? Es geht um den System.IO-Namespace. Also vollqualifiziert: If Not System.IO.File.Exists(DeineDatei) Then MessageBox.Show("Diese Datei existiert nicht.")
    3 Sekunden Google-Suche. Aber das ist auch ein Zeichen dafür, dass die importierten Namespaces etwas falsch eingestellt sind.


    Danke! Funktioniert nun! Ich bedanke mich auch bei den anderen für die Hilfe.
    Die haben wohl heimlich die Syntax "geändert". Durch Probieren bin ich darauf gekommen, dass man VB6 = Microsoft.VisualBasic, also mit Leerzeichen importieren muss, dann klappt es wieder wie gewohnt.
    Bilder
    • ImportedNamespacesAtRuntime.png

      28,12 kB, 832×482, 46 mal angesehen
    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.

    ErfinderDesRades schrieb:

    Also mit sonem Alias haste den Deppen-Namespace nun wieder drin in deine Projekte.

    Da weist man mit VB6 = Microsoft.VisualBasic doch wieder den gesamten Namespace vom Microsoft.VisualBasic hinzu?
    Oder verstehe ich das mit dem Alias nicht ganz - ich meine da jetzt nur: wie Teile vom VisualBasic-Namespace zu vermeiden (Bild ist von VS2013)...