mouseleave trigger managen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ruediger_006.

    mouseleave trigger managen

    Hallo erstmal!

    Ich habe ein DGV (kann aber natürlich auch was anderes sein). Ich möchte, sobald eine Änderunge vorgenommen wird und das DGV verlassen wird eine Msg haben die an das Speichern erinnert. Das funktioniert auch, aber wenn ich mit der Maus dann nochmal über das DGV gehe kommt die Msgbox natürlich nochmal. Von der Logik her müsste sich den Trigger für den Event nach einmaligem auslösen solange unterdrücken bis die Form verlassen wird und dann wieder einmal zulassen usw. Das bekomme ich aber nicht hin. Was ich bis jetzt habe ist folgendes:

    VB.NET-Quellcode

    1. Private Sub DataGridView_MouseLeave(sender As Object, e As EventArgs) Handles DataGridView.MouseLeave
    2. If DataSet1.Table.GetChanges IsNot Nothing Then
    3. MsgBox("Bitte Änderungen speichern!")
    4. End If
    5. End Sub


    Wäre super, wenn mir hier vielleicht jemand helfen könnte.

    VG

    ruediger
    Du kannst einen Boolean nutzen, der wenn änderungen vorgenommen True ist, wenn er True ist(bei MouseLeave) die MessageBox anzeigen und auf´s Speichern hinweisen, beim beenden der MessageBox den Boolean auf False setzen dann kommt die ohne änderungen nicht wieder.
    Vielleicht ist es sinnvoll, statt der MessageBox auf der Form ein Label rot zu machen, immer eine MessageBox wegklicken zu müssen ist iwie nicht bedienbar.
    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!
    Hi!

    Jo ihr habt natürlich recht. Das war total nervig mit der msgbox. Ich habe das so geregelt:

    wenn etwas geändert wurde und das dgv wird verlassen kommt die msgbox. dann ist msgboxaus = true. Wenn gespeichert wurde ist msgboxaus = false, popt aber erst wieder auf, wenn nochmal was geändert wird.

    VB.NET-Quellcode

    1. private dim msgboxaus as boolean = true

    VB.NET-Quellcode

    1. Private Sub DataGridView_Leave(sender As Object, e As EventArgs) Handles DataGridView.Leave
    2. MsgBoxAus = False
    3. End Sub


    VB.NET-Quellcode

    1. Private Sub DataGridView_MouseLeave(sender As Object, e As EventArgs) Handles DataGridView.MouseLeave
    2. If DataSet1.Tabelle.GetChanges IsNot Nothing And MsgBoxAus = False Then
    3. MsgBox("Sie haben Änderungen vorgenommen. Um diese zu speichern bitte Speicherbutton drücken!")
    4. MsgBoxAus = True
    5. End If
    6. End Sub


    VB.NET-Quellcode

    1. Private Sub BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorSaveItem.Click
    2. Me.Validate()
    3. Me.BindingSource.EndEdit()
    4. Me.TableAdapterManager.UpdateAll(Me.DataSet1)
    5. MsgBox("Daten wurden gespeichert!")
    6. MsgBoxAus = False
    7. End Sub


    Danke für eure hilfe!