Variablen über AddHandler an Sub übergeben mit Delegates?

  • VB.NET

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

    Variablen über AddHandler an Sub übergeben mit Delegates?

    Hallo ihr Lieben,
    bin neu im Gebiet Visual Basic und habe gerade mein erstes Projekt am laufen, jedoch scheitere ich an einer stelle. Mein Problem ist,
    dass ich dynamisch aus einer textdatei bilder und dazugehörige namen und links auslesen lasse. Diese Bilder werden dann in einer Picturebox angezeigt. Nun will ich, dass man per Klick auf eine Picturebox den dazugehörigen Namen und den dazugehörigen Bild an ein bereits vorhandenes Label übergeben kann. Jedoch funktioniert es nicht, seht aber am besten selbst:

    VB.NET-Quellcode

    1. Private Sub standardfenster_OnLoad(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
    2. Me.Opacity = 0
    3. Dim fnum = FreeFile(), text As String, filelength
    4. FileOpen(fnum, Application.StartupPath & "\games.txt", OpenMode.Input)
    5. filelength = LOF(fnum)
    6. text = InputString(fnum, filelength)
    7. FileClose(fnum)
    8. Dim array() As String = Split(text, vbCrLf)
    9. Dim arraycount As Integer = UBound(array)
    10. Dim Pictures(arraycount) As PictureBox
    11. Dim o As Integer = 0
    12. For Each i As String In array
    13. If i <> "" Then
    14. i = Trim(i)
    15. Dim array3() As String
    16. array3 = Split(i, "|")
    17. Pictures(o) = New PictureBox
    18. Pictures(o).Name = array3(0)
    19. Pictures(o).Size = New System.Drawing.Size(144, 184)
    20. Pictures(o).SizeMode = PictureBoxSizeMode.StretchImage
    21. Pictures(o).BorderStyle = BorderStyle.None
    22. Pictures(o).ImageLocation = Application.StartupPath & "/img/" & array3(2)
    23. Pictures(o).Parent = FlowLayoutPanel1
    24. Pictures(o).Visible = True
    25. FlowLayoutPanel1.Controls.Add(Pictures(o))
    26. Dim deleg As New übergabe(AddressOf showprop)
    27. AddHandler Pictures(o).Click, AddressOf clickchange
    28. AddHandler Pictures(o).MouseDoubleClick, AddressOf gameinfochange_function(array3(0), array3(1), array3(2))
    29. o = o + 1
    30. End If
    31. Next i
    32. End Sub
    33. Delegate Sub gameinfo_delegate(ByRef gamename As String, ByRef pathlink As String, ByRef piclink As String)
    34. Sub gameinfochange_function(ByRef gamename As String, ByRef pathlink As String, ByRef piclink As String)
    35. Label2.Text = gamename
    36. End Sub


    Der AddressOf-Operand muss dem Namen einer Methode entsprechen (ohne Klammern)

    Ich hoffe ihr könnt mir helfen.
    Liebe Grüße
    TR
    schreibe die Daten doch in die Tag Eigenschaft der PictureBox, verwende AddressOf ganz normal auf die entsprechende Methode und verwende die sender Variable um an die Tag Eigenschaft zu kommen(DirectCast(sender,PictureBox)....)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    VB.NET-Quellcode

    1. Public Class Daten
    2. public text as string
    3. public wert As integer
    4. Sub new(text,wert)
    5. me.text = text
    6. me.wert =wert
    7. End Sub
    8. End Class
    9. 'Tag Zuweisung:
    10. PictureBox.Tag = New Daten("test",10)
    11. 'auslesen/änder:
    12. DirectCast(PictureBox.Tag,Daten).wert (= 11)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---