2 Button - 1 Form - 2 verschiedene Fortsetzungen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    2 Button - 1 Form - 2 verschiedene Fortsetzungen

    Hallo Leute

    Also ich in einem Projekt eine Hauptform. Auf dieser Befinden 2 Buttons (Button1, Button2).
    Und ich habe noch eine Dialogform wo bekanntlich aus "Ja" und "Nein" ausgewählt werden kann.

    Nun ist es so: Egal ob ich auf Button1 oder Button2 klicke, die Dialogform soll erscheinen. Soweit kein Problem.
    Jetzt soll, wenn in der Dialogform "Ja" angeklickt wird, je nach Button welcher vorher in der Hauptform geklickt wurde, bei Button1 die Aktion1 und bei Button2 die Aktion2 durchgeführt werden.

    Wie kann so etwas per Code lösen, da ich ungerne noch ein zweites Mal eine gleiche Dialogform erstellen möchte.

    Hoffe ihr könnt mir weiterhelfen. Danke :)
    Klingt nach der Ja-Nein-Abfrage einer MessageBox, geht ohne eigene Form.

    VB.NET-Quellcode

    1. If MessageBox.Show(..., YesNo) = DialogResult.Yes Then
    2. ' tue das eine
    3. Else
    4. ' tue das andere
    5. Emd If
    Funktioniert mit einer Form genau so.
    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!
    Eben nicht, da ich eine eigene Form mit dem Metro-Style verwende.

    Das Nein Ereignis ist bei beiden Buttons das gleiche:

    DialogResult ... Cancel
    Close()

    Nur die Aktionen der des Ja Buttons sollen sich unterscheiden. Eben abhängig davon, welcher Button (Button1, Button2) angeklickt wurde.
    Eine Form kann dir auch Dialog-Results zurückgeben:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim f As New Form2
    4. Dim result As DialogResult = f.ShowDialog
    5. Select Case result
    6. Case Windows.Forms.DialogResult.OK
    7. MessageBox.Show("OK")
    8. Case Windows.Forms.DialogResult.Cancel
    9. MessageBox.Show("Cancel")
    10. End Select
    11. End Sub
    12. End Class

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Me.DialogResult = Windows.Forms.DialogResult.OK
    4. End Sub
    5. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    6. Me.DialogResult = Windows.Forms.DialogResult.Cancel
    7. End Sub
    8. End Class
    Definiere

    FrozzenApple schrieb:

    eine gleiche Dialogform erstellen
    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!
    naja eben 2x die gleiche form erstellen wo auf dem ja button jeweils die funktion liegen.

    @Derfuhr: Dies funktioniert zwar, aber erst nach einigen Sekunden an Stillstand des Programmes. Es müsste aber so schnell funktionieren, wie wenn auf einen Button klickt und folgendes ausführt:

    Textbox1.Text = ""

    FrozzenApple schrieb:

    naja eben
    nicht.

    VB.NET-Quellcode

    1. Using frm = New Form2
    2. frm.Flag = True
    3. frm.ShowDialog()
    4. End Using

    VB.NET-Quellcode

    1. Using frm = New Form2
    2. frm.Flag = False
    3. frm.ShowDialog()
    4. End Using
    Dies meinst Du wahrscheinlich nicht. Oder?
    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!
    @RodFromGermany: Okay?! also das checke ich gerade nicht ganz. Kannst du mir das ein wenig erklären?

    @Derfuhr: Also bei mit nicht so direkt wie du sagst. Kann aber auch sein dass es am PC liegt. Werde es an einem anderen dann noch testen.
    Was RodFromGermany meint, das du in dem Fall z.B. einen Public Boolean nutzen kannst, um diesen dann im Form_Load abzufragen und darauf zu reagieren.

    VB.NET-Quellcode

    1. Public Flag As Boolean
    2. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
    3. If Flag Then
    4. Me.Text = "True"
    5. Else
    6. Me.Text = "False"
    7. End If
    8. End Sub

    FrozzenApple schrieb:

    Kannst du mir das ein wenig erklären?
    Wie es @Derfuhr: beschrieben hat.
    Von außen die Property setzen, innen auswerten und entsprechend reagieren.
    Feddich. :D
    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!