Button-Interaktionen innerhalb eines Dialogs

  • VB.NET
  • .NET (FX) 4.0

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

    Button-Interaktionen innerhalb eines Dialogs

    Hallo liebes Forum.

    Folgende Problemstellung:
    Ich rufe eine Form "Suche" als .ShowDialog() auf. klicke ich in diesem Dialog auf "suchen" schließt er den Dialog sofort und kehrt zur vorherigen Form zurück.
    Innerhalb des Dialogs befindet sich ein DataGridView mit Filtemöglichkeiten, ein Klick auf "suchen" soll dann die Ausgabe starten. Nach Doppelklick auf eine
    der DataRows oder einfache Selektion und Klick auf "OK" soll sich der Dialog schließen und die selektierte DataRow an die BindingSource der Hauptform übergeben.

    Der Aufruf erfolgt über:

    VB.NET-Quellcode

    1. Private Sub btn_Click(sender As Object, e As EventArgs) Handles btnSuche.Click, btnNeu.Click
    2. Select Case True
    3. Case sender Is btnSuche : DialogSuche()
    4. Case sender Is btnNeu
    5. End Select
    6. End Sub
    7. Sub DialogSuche()
    8. If dlgFahrzeugSuche.ShowDialog = DialogResult.OK Then
    9. bsFahrzeugDetail.DataSource = dlgFahrzeugSuche.Datensatz
    10. End If
    11. End Sub

    Es gibt 3 Buttons (Suchen, OK, abbrechen) - OK und abbrechen sind ausgelegt auf Dialogresult:

    VB.NET-Quellcode

    1. Private Sub btn_Click(sender As Object, e As EventArgs) Handles btnOK.Click, btnCancel.Click
    2. Select Case True
    3. Case sender Is btnSuche
    4. Dim suchSpalte As DataColumn = Nothing
    5. Select Case True
    6. Case rBtnKennzeichen.Checked
    7. suchSpalte = Dts.Fahrzeug.KennzeichenColumn
    8. Case rBtnFabrikat.Checked
    9. suchSpalte = Dts.Fahrzeug.FabrikatColumn
    10. Case rBtnModell.Checked
    11. suchSpalte = Dts.Fahrzeug.ModellColumn
    12. Case rBtnStandort.Checked
    13. suchSpalte = Dts.Fahrzeug.StandortIDColumn
    14. End Select
    15. Dim expression = "1=0"
    16. Dim suchBegriff As String = Me.TbSuche.Text
    17. If suchBegriff <> "" Then
    18. If CbInaktive.CheckState = CheckState.Checked Then
    19. expression = $"{suchSpalte} Like '*{suchBegriff}*' AND Aktiv = True"
    20. Else
    21. expression = $"{suchSpalte} Like '*{suchBegriff}*'"
    22. End If
    23. Else
    24. If CbInaktive.CheckState = CheckState.Checked Then
    25. expression = "Aktiv = True"
    26. Else
    27. expression = ""
    28. End If
    29. End If
    30. bsFahrzeug.Filter = expression
    31. Case sender Is btnOK
    32. If DgvFahrzeugsuche.SelectedRows.Count > 0 Then
    33. Me.Close()
    34. Me.DialogResult = DialogResult.OK
    35. Else
    36. msgExclamation("Bitte einen Eintrag auswählen")
    37. End If
    38. Case sender Is btnCancel
    39. Me.Close()
    40. Me.DialogResult = DialogResult.Cancel
    41. End Select
    42. End Sub


    Gibt's da einen Weg, der Button-Interaktionen innerhalb eines Dialogs zulässt oder muss ich das dann als Form anstelle Dialog öffnen?
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    Ich rufe eine Form "Suche" als .ShowDialog() auf.
    Vielleicht probierst Du es mal mit nem Nicht-modalen Dialog, da kannst Du an das Parent-Fenster Events senden, das funktioniert dann wie im Studio selbst:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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!
    Das Problem war eine Dialog-Form mit 3. Buttons und einem DGV.
    button Ok
    button cancel
    button suche (um das DGV gefiltert zu füllen)

    mit Aufruf über ​.ShowDialog() hat sich die Form mit Click auf „suche“ geschlossen obwohl es ja das DGV filtern soll. Hab’s jetzt mit ​.Show() gelöst, klappt
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    ErfinderDesRades schrieb:

    Man kann btSuche.DialogResult auf None setzen, dann schliesst der Dialog nicht mehr beim da draufklicksen.

    Das hatte ich natürlich nicht probiert. ICh hatte lediglich bei den beiden anderen Buttons "OK = DialogResult.OK" und "abbrechen = DialogResult.Cancel" gesetzt.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    @tragl Dann solltest Du Dich zunächst ein wenig mit Dialogen als solchen befassen:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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!