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!
    Quixo OS 2.1 das Virtuelle Betriebssystem : 50%

    Quixo OS 2.1 das Virtuelle Betriebssystem - Entwicklung geht weiter
    Webseite geupdatet schaut nun vorbei ;)
    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.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    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
    Quixo OS 2.1 das Virtuelle Betriebssystem : 50%

    Quixo OS 2.1 das Virtuelle Betriebssystem - Entwicklung geht weiter
    Webseite geupdatet schaut nun vorbei ;)
    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.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    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 :/

    Quixo OS 2.1 das Virtuelle Betriebssystem : 50%

    Quixo OS 2.1 das Virtuelle Betriebssystem - Entwicklung geht weiter
    Webseite geupdatet schaut nun vorbei ;)
    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.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @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!
    Quixo OS 2.1 das Virtuelle Betriebssystem : 50%

    Quixo OS 2.1 das Virtuelle Betriebssystem - Entwicklung geht weiter
    Webseite geupdatet schaut nun vorbei ;)
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Alles klar danke :thumbsup:
    Quixo OS 2.1 das Virtuelle Betriebssystem : 50%

    Quixo OS 2.1 das Virtuelle Betriebssystem - Entwicklung geht weiter
    Webseite geupdatet schaut nun vorbei ;)
    Option Strict On nicht vergessen!