Problem... Public Property ImageStack as List(of Image)

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Problem... Public Property ImageStack as List(of Image)

    Hey,

    ich will gerade ein Control schreiben wo der Benutzer mehrere Bilder auswählen kann. Diese Sollen dann in einer List(of Image) gespeichert werden. Wenn ich nun im Designer den ImageStack füllen möchte, bekomme ich folgende Fehlermeldung

    Brainfuck-Quellcode

    1. ---------------------------
    2. Microsoft Visual Studio
    3. ---------------------------
    4. Eine Instanz von System.Drawing.Image kann nicht erzeugt werden, da es sich um eine abstrakte Klasse handelt.
    5. ---------------------------
    6. OK
    7. ---------------------------


    Mein Code:

    VB.NET-Quellcode

    1. ...
    2. Public Property ImageStack As List(Of Image)
    3. ...


    Hab echt keine ahnung wie ich das Problem lösen kann...
    Danke schonmal :)

    Gruß,

    VB.NET-Quellcode

    1. Public Property ImageStack As List(Of Image)
    2. Public Sub New()
    3. InitializeComponent()
    4. ImageStack = New List(Of Image)
    5. End Sub
    funktioniert bei mir problemlos, allerdings unter 2010.
    Ist das eine Form-Klasse, wo das drin steht?
    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!
    Die Liste wird auch nicht sein Problem sein, sondern er versucht vermutlich, ein Image mit New zu erzeugen und das läuft in nen Fehler, weil Image ne abstrakte Klasse ist.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @SpaceyX: Bei 664 Beiträgen von @Devtronic: erwarte ich, dass er sein Problem verständlich formuliert.
    Eine solch List musst Du mit Instanzen befüllen, z.B. so:

    VB.NET-Quellcode

    1. ImageStack.Add(Image.FromFile("kljh"))
    2. ImageStack.Add(New Bitmap(10, 20))
    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: ok, aber wie stelle ich das an?
    Ich habe jetzt ne eigene Klasse ImageStack:

    VB.NET-Quellcode

    1. Public Class ImageStack
    2. Inherits List(Of Image)
    3. Public Sub New()
    4. MyBase.New()
    5. End Sub
    6. Public Overloads Sub Add(item As Image)
    7. Dim OFD As New OpenFileDialog()
    8. OFD.Filter = "JPEG|*.jpeg"
    9. If OFD.ShowDialog = DialogResult.OK Then
    10. MyBase.Add(Image.FromFile(OFD.FileName))
    11. End If
    12. End Sub
    13. End Class

    Aber irgendwie greift der Dialog nicht, sprich er wird beim Klick auf Hinzufügen nicht angezeigt(Es kommt die gleiche Fehlermeldung wie im ersten Post):


    Danke für eure Hilfe :)
    möglicherweise isses ja der Designer, der versucht, da iwas zu instanzieren, und das geht nicht, weil die Image-Klasse MustOverride ist.

    Da gibts iwie son DesignerSerialisation-Attribut, das kann man auf die Property anwenden, und DesignerSerialistionVisibility.Never angeben, dann versucht der Designer sowas nicht mehr.
    Vlt. isses ja das.