Mehrere Rückgabewerte aus einem Dialog

  • VB.NET

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

    Mehrere Rückgabewerte aus einem Dialog

    Ich möchte gerne aus einem Dialog als Result mehrere Werte erhalten.

    Zur Zeit sieht das ganze in etwa so aus:

    VB.NET-Quellcode

    1. Dim aList As New List(Of MediaContainers.Image)
    2. Using dImgSelect As New dlgImgSelect()
    3. If dImgSelect.ShowDialog(DBScrapeMovie, Enums.ImageType.Fanart, aList) = DialogResult.OK Then
    4. Fanart = dImgSelect.Results
    5. End If
    6. End Using



    Der Dialog sieht in etwa so aus:

    VB.NET-Quellcode

    1. Public Class dlgImgSelect
    2. Private _results As New MediaContainers.Image
    3. Private _ImageList As New List(Of MediaContainers.Image)
    4. #Region "Properties"
    5. Public Property Results As MediaContainers.Image
    6. 'Public Property Results As MediaContainers.Image
    7. Get
    8. Return _results
    9. End Get
    10. Set(value As MediaContainers.Image)
    11. _results = value
    12. End Set
    13. End Property
    14. #End Region
    15. Public Overloads Function ShowDialog(ByRef DBMovie As Structures.DBMovie, ByVal Type As Enums.ImageType, ByRef ImageList As List(Of MediaContainers.Image), Optional ByVal _isEdit As Boolean = False) As DialogResult
    16. '//
    17. ' Overload to pass data
    18. '\\
    19. Me.tMovie = DBMovie
    20. Me._ImageList = ImageList
    21. Me.DLType = Type
    22. Me.isEdit = _isEdit
    23. 'Me.isShown = True
    24. Select Case DLType
    25. Case Enums.ImageType.Posters
    26. aDes = Master.eSize.poster_names(2).description
    27. Case Enums.ImageType.Fanart
    28. aDes = Master.eSize.backdrop_names(0).description
    29. End Select
    30. Me.SetUp()
    31. Return MyBase.ShowDialog()
    32. End Function
    33. Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    34. Try
    35. 'If IsNothing(Me.tmpImage.WebImage.Image) Then
    36. If Not IsNothing(Me.tmpImage.WebImage.Image) Then
    37. Me.pnlBG.Visible = False
    38. Me.Refresh()
    39. Application.DoEvents()
    40. Select Case True
    41. Case Me.rbXLarge.Checked
    42. Results = CType(Me.rbXLarge.Tag, MediaContainers.Image)
    43. Case Me.rbLarge.Checked
    44. Results = CType(Me.rbLarge.Tag, MediaContainers.Image)
    45. Case Me.rbMedium.Checked
    46. Results = CType(Me.rbMedium.Tag, MediaContainers.Image)
    47. Case Me.rbSmall.Checked
    48. Results = CType(Me.rbSmall.Tag, MediaContainers.Image)
    49. End Select
    50. End If
    51. Catch ex As Exception
    52. Master.eLog.WriteToErrorLog(ex.Message, ex.StackTrace, "Error")
    53. End Try
    54. Me.DialogResult = System.Windows.Forms.DialogResult.OK
    55. Me.Close()
    56. End Sub



    Ich möchte nun aber auch noch folgende Rückgabewerte (etList & efList):

    VB.NET-Quellcode

    1. Dim aList As New List(Of MediaContainers.Image)
    2. Dim etList As New List(Of String)
    3. Dim efList As New List(Of String)
    4. Using dImgSelect As New dlgImgSelect()
    5. If dImgSelect.ShowDialog(DBScrapeMovie, Enums.ImageType.Fanart, aList, etList, efList) = DialogResult.OK Then
    6. Fanart = ???
    7. efArt = ???
    8. etArt = ???
    9. End If
    10. End Using



    Was müsste ich machen damit ich als Result alle 3 Werte bekomme?
    @DanCooper:: Gib Deinem Dialog die kommunizierenden Properties und dann so:

    VB.NET-Quellcode

    1. Using dImgSelect As New dlgImgSelect()
    2. If dImgSelect.ShowDialog(DBScrapeMovie, Enums.ImageType.Fanart, aList, etList, efList) = DialogResult.OK Then
    3. Fanart = dImgSelect.Fanart
    4. efArt = dImgSelect.efArt
    5. etArt = dImgSelect.etArt
    6. End If
    7. End Using
    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!

    DanCooper schrieb:

    Optional
    So:

    VB.NET-Quellcode

    1. Using dImgSelect As New dlgImgSelect()
    2. dImgSelect.Fanart = Fanart
    3. dImgSelect.efArt = efArt
    4. dImgSelect.etArt = etArt
    5. If dImgSelect.ShowDialog(DBScrapeMovie, Enums.ImageType.Fanart) = DialogResult.OK Then
    6. Fanart = dImgSelect.Fanart
    7. efArt = dImgSelect.efArt
    8. etArt = dImgSelect.etArt
    9. End If
    10. End Using
    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!