Visual Basic 2010 Bild von einer Dynamsich erstellter PictureBox herausfinden

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    Visual Basic 2010 Bild von einer Dynamsich erstellter PictureBox herausfinden

    Ja die ganze Frage steht schon im Titel :)

    Wie kann ich das Bild ermitteln?
    Danke im vorraus!
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Ich blick's trotzdem nicht. Was willst Du genau? Geht's darum, dass Du nicht weißt, wie Du an die PicBox rankommst? Oder was ist bei NameDeinerPicBox.Image unzureichend?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Nein..
    Edit: Ich möchte jedes Control in ein Panel ermitteln was Dynamisch erzeugt wird und alle in einer ListBox anzeigen. Falls es eine PictureBox ist soll das Bild von dieser ausgelesen und angezeigt werden (nur der Bild name z.b. lol.png)

    Mein Code momentan:

    VB.NET-Quellcode

    1. Public Sub GetControls(ByRef control As Control)
    2. For Each cntrl As Control In control.Controls
    3. TranslateControl(cntrl)
    4. Next
    5. End Sub
    6. Private Sub TranslateControl(ByRef cntrl As Control)
    7. Try
    8. Dim info As String = cntrl.GetType.Name & " " & cntrl.Location.ToString 'Zwischenspeicher und hier soll noch ermittelt werden welches Bild gerade in der geladenen PictureBox ist (ein komplettes Beispiel unten)
    9. ListBox1.Items.Add(info) 'dann aus dem Zwischenspeicher die Daten lesen und in einer ListBox anzeigen lassen
    10. For Each item As System.Windows.Forms.Control In cntrl.Controls
    11. TranslateControl(item)
    12. Next
    13. Catch ex As Exception
    14. 'fehler blabla
    15. End Try


    Hier mal ein kleines Beispiel:

    Control - - - Location - - - Das Bild
    PictureBox {x=43, y=57} C:\Lol.pnh

    falls keine PictureBox dann halt ohne die Bild datei (C:\Lol.pnh)
    Button {x=2, y=4}

    Hoffentlich verständlich
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Du versuchst cntrl mittels DirectCast in eine PicBox umzuwandeln und holst Dir dann ImageLocation - falls der Pfad darin abgespeichert ist. Wäre eine Möglichkeit, die ich nutzen würde.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Also naja ich hab mal jetzt etwas rumprobiert aber mit DirectCast habe ich noch nie so wirklich mit gearbeitet, sieht es so denn schon akzeptabel aus? (Am ende wird das ) Blau makiert also geht's nicht)

    VB.NET-Quellcode

    1. Dim location As String = DirectCast(DirectCast(cntrl, PictureBox).ImageLocation.ToString)


    EDIT:
    Im Fehler steht: Zwei durch komma getrennte Argumente sind erforderlich
    doch ich weiß halt nicht was das zweite Argument ist :/

    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    DirectCast braucht 2 Sachen. 1. was will man umwandeln, 2. worin will man es umwandeln. Du hast beim äußeren DirectCast den Zieltyp nicht angegeben. Ist aber auch überflüssig:

    VB.NET-Quellcode

    1. Dim location As String = DirectCast(cntrl, PictureBox).ImageLocation

    ImageLocation ist bereits vom Typ String
    Fehlerbehandlung nicht vergessen. Nicht jedes Control kann in eine PicBox umgewandelt werden. Aber das ist eine andere Baustelle.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Vielen vielen dank für deine Hilfe :)
    Ich weiß ich bin anstrengend aber dank euch lerne ich auch dazu, nun weiß ich auch wie man DirectCast benutzt.

    Danke!
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    @ClonkAndre Falls Du unterscheiden willst, ob da rot.png oder grün.png geladen ist - das musst Du Dir beim laden merken.
    Mach Dir ein Enum mit denselben Namen wie die Bilder heißen, und wenn Du ein Bild lädtst, merkst Du Dir das in der kommunizierenden Enum-Variable.
    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!