ImageList Fehlermeldung beim Hinzufügen von Bildern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    ImageList Fehlermeldung beim Hinzufügen von Bildern

    Hi,
    ich habe ein Usercontrol, dass ein FlowLayoutPanel und eine ImageList beinhaltet. Die Bilder aus der ImageList sollen im FlowLayoutPanel angezeigt werden und man soll Bilder entfernen und hinzufügen können. Dafür habe ich diese Propery geschrieben:

    VB.NET-Quellcode

    1. <Description("Die anzuzeigenden Bilder")> _
    2. <Category("Appearance")> _
    3. <Browsable(True)> _
    4. <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
    5. Public Property Images() As ImageList.ImageCollection
    6. Get
    7. Return ImageList1.Images
    8. End Get
    9. Set(ByVal txtValue As ImageList.ImageCollection)
    10. ImageList1.Images.Clear()
    11. FlowLayoutPanel1.Controls.Clear()
    12. For b = 0 To txtValue.Count - 1
    13. ImageList1.Images.Add(b, txtValue.Item(b))
    14. Next
    15. For x = 0 To ImageList1.Images.Count - 1
    16. Dim i As New PictureBox
    17. i.Name = x.ToString
    18. i.Image = ImageList1.Images.Item(x)
    19. i.Size = imgsize
    20. i.Margin = New Padding(10)
    21. i.SizeMode = PictureBoxSizeMode.Zoom
    22. AddHandler i.Click, AddressOf i_CLick
    23. FlowLayoutPanel1.Controls.Add(i)
    24. Next
    25. End Set
    26. End Property


    Aber wenn ich das UserControl dann teste und Bilder hinzufügen will, dann kommt die Fehlermeldung:
    Der Parameter muss den Typ "Image" haben. Parametername: Value
    Weiss einer, was ich da falsch mache?

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vb-checker“ ()

    Alex2000 schrieb:

    mus das nicht so heisen:

    VB.NET-Quellcode

    1. i.Image = ImageList1.Images(x)

    Ich habs mal geändert. Hat aber nichts gebracht.

    und kannst du mal erklären was du hier erreichen willst:

    VB.NET-Quellcode

    1. ImageList1.Images.Add(b, txtValue.Item(b))


    Naja, ich füge die in txtValue enthaltenen Bilder in die ImageList ein

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    hier weist du ein Index zu der von Eigenschaft "Item" zurück gegeben wird, obwohl wird ein bild erwartet:

    VB.NET-Quellcode

    1. ImageList1.Images.Add(b, txtValue.Item(b))


    und das gleiche noch ein mal:

    VB.NET-Quellcode

    1. i.Image = ImageList1.Images.Item(x)


    Schau dir etwas genauer die Eigenschaften von ImageListe in MSDN an. ;)
    Irgendwie komm ich da nicht weiter. Mein Code sieht nun so aus:

    VB.NET-Quellcode

    1. Public Property Images() As ImageList.ImageCollection
    2. Get
    3. Return ImageList1.Images
    4. End Get
    5. Set(ByVal txtValue As ImageList.ImageCollection)
    6. ImageList1.Images.Clear()
    7. FlowLayoutPanel1.Controls.Clear()
    8. For b = 0 To txtValue.Count - 1
    9. ImageList1.Images.Add(b, txtValue(b))
    10. Next
    11. For x = 0 To ImageList1.Images.Count - 1
    12. Dim i As New PictureBox
    13. i.Name = x.ToString
    14. i.Image = ImageList1.Images(x)
    15. i.Size = imgsize
    16. i.Margin = New Padding(10)
    17. i.SizeMode = PictureBoxSizeMode.Zoom
    18. AddHandler i.Click, AddressOf i_CLick
    19. FlowLayoutPanel1.Controls.Add(i)
    20. Next
    21. End Set
    22. End Property

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !