Abspeichern-Abfrage Problem

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VBLukas.

    Abspeichern-Abfrage Problem

    Hallihallo,

    ich arbeite gerade an einem TextEditor. Sofern man den Text verändert hat, bzw. überhaupt etwas gemacht hat, wird dem Formtitel ein sternchen hinzugefügt. Soweit so gut, das klappt auch immer. Beim Schließen soll nun eine Abfrage kommen, ob man speichern möchte oder nicht. Allerdings öffnet sich sowohl beim Klick auf "ja" als auch beim Klick auf "Nein" der SavefileDialog. Warum?

    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    2. If Me.Text.EndsWith("*") Then
    3. MsgBox("Wollen Sie die Textdatei abspeichern?", MsgBoxStyle.YesNo, "Speichern")
    4. If MsgBoxResult.Yes Then
    5. SpeichernToolStripMenuItem.PerformClick()
    6. Me.Text.Replace("*", "")
    7. If MsgBoxResult.No Then
    8. Me.Close()
    9. End If
    10. Else
    11. Me.Close()
    12. End If
    13. Else
    14. End If
    15. End Sub


    mfg,
    Lukas
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    versuchs mal so:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    2. If Me.Text.EndsWith("*") Then
    3. if MsgBox("Wollen Sie die Textdatei abspeichern?", MsgBoxStyle.YesNo, "Speichern") = MsgBoxResult.Yes Then 'siehe hier <-------------
    4. SpeichernToolStripMenuItem.PerformClick()
    5. Me.Text.Replace("*", "")
    6. else
    7. Me.Close()
    8. End If
    9. End If
    10. End Sub
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
    Weil du in deiner If-Abfrage die Enumeration stehen hast und nicht das Resultat deiner Messagebox.
    Erstelle eine Variable result as Dialogresult und weise dieser mit result=Messagebox.show("Dies ist nämlich die richtige Methode für Messageboxen, Msgbox ist veraltet (VB6)", usw... einen Wert zu.
    Dann fragst du mit If result=dialogresult.wasauchimmergedrücktwurde das Ergebnis ab.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Vielen Dank für die schnelle Hilfe. Jetzt wird der Dialog nur noch bei "Ja" angezeigt, allerdings wiederholt sich die MsgBox jetzt immer wieder bei einem Klick auf "Nein". Ich gucke mal wo das Problem liegt und melde mich vlllt. nochmal.

    Danke,
    Lukas

    @Vatter: Werde ich auch mal ausprobieren, thx.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    versuchs mal so wenns nich ganz geht musst vll noch bisschen umbauen habs nur ausm kopf raus

    VB.NET-Quellcode

    1. If Me.Text.EndsWith("*") Then
    2. If MsgBox("Wollen Sie die Textdatei abspeichern?", MsgBoxStyle.YesNo, "Speichern") = MsgBoxResult.Yes Then
    3. MsgBox("mimi")
    4. 'SpeichernToolStripMenuItem.PerformClick()
    5. Me.Text.Replace("*", "")
    6. Else
    7. Application.Exit()
    8. End If
    9. Else
    10. Application.Exit()
    11. End If


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Danke thefiloe, die Methode klappt auf Anhieb. Das Problem, das sich der Dialog immer wieder wiederholt, lag daran, dass das Sternchen noch im Titel vorhanden war, wodurch das Programm dachte, es sei noch nichts gemacht worden. Dadurch wiederholte sich das Ganze.

    Danke an euch alle! :)
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.