BackgroundImages mit Controls aus PicBox löschen

  • VB.NET

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

    BackgroundImages mit Controls aus PicBox löschen

    Hey liebe Comunity,
    Ich habe folgendes Problem: Ich möchte Viele Ressourcen(BackgroundImages) aus vielen Pic.Boxen entfernen und später im Laufe des Programms wieder
    belegen! Ich habe folgendes versucht:

    VB.NET-Quellcode

    1. Dim i As Integer
    2. For i = 1 To 9
    3. .
    4. .
    5. .
    6. .
    7. Controls("pr" & i & "rf1").BackgroundImage = Nothing
    8. Controls("pr" & i & "rf2").BackgroundImage = Nothing
    9. Controls("pr" & i & "rf3").BackgroundImage = Nothing
    10. Controls("pr" & i & "rf4").BackgroundImage = Nothing
    11. Controls("pr" & i & "sf1").BackgroundImage = Nothing
    12. Controls("pr" & i & "sf2").BackgroundImage = Nothing
    13. Controls("pr" & i & "sf3").BackgroundImage = Nothing
    14. Controls("pr" & i & "sf4").BackgroundImage = Nothing
    15. Next i

    Ich habe es deshalb mit Controls gemacht damit ich meine vielen Pic.Boxen einfacher aufrufen kann.
    Leider wird das BackgroundImage im Programm nicht gelöscht.... ?(
    Mit Dispose() geht es auch nicht da ich erst mit IsNothing hinterfragen muss ob das Objekt NULL ist(was sie ja nicht ist).
    Ich hoffe ihr könnt mir helfen! ^^

    Reyventall schrieb:

    kann ich es nicht anders lösen?
    Beschreib zunächst, was genau Du machen willst, dann sehen wir weiter.
    Mit GDI malst Du direkt auf die Fläche des betreffenden Controls / der Form.
    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!

    Reyventall schrieb:

    VB.NET-Quellcode

    1. ...
    2. Controls("pr" & i & "rf1").BackgroundImage = Nothing
    3. ...
    Leider wird das BackgroundImage im Programm nicht gelöscht...
    Das ist komisch, denn mit diesem Code - wenn er nicht abstürzt - entfernt man ein BackgroundImage.
    Kann mir nur vorstellen, dass du jeweils das falsche Control am Wickel hast, oder dass das Image nicht im .BackgroundImage liegt, sondern im .Image (eine Picturebox hat nämlich 2 Properties, die man mit Bildle belegen kann).

    Übrigens halte auch ich deine Vorgehensweise für eine Katastrophe, aber da du ja vermeinst, fast fertig zu sein, kann man dich vmtl. nicht auf einen besseren Weg bringen.

    Aber zu deiner Unterhaltung: s'gab neulich schonmal einen Mastermind-Thread, da hab ich ein bischen zum Thema Datenmodellierung abgelassen: Variable als Objektnamen
    Kann mir nur vorstellen, dass du jeweils das falsche Control am Wickel hast, oder dass das Image nicht im .BackgroundImage liegt, sondern im .Image (eine Picturebox hat nämlich 2 Properties, die man mit Bildle belegen kann).​
    Ich bin ein Dussel...Ja du hattest recht!
    Es wird wirklich über .Image aufgerufen allerdings gibt mir der Editor sofort den Fehler: "Image" ist kein Member von System.Windows.Forms.Controls
    Kann ich irgendwie anders meine vielen Pic.Boxen in einer For-Schleife unterbringen um sie nicht alle einzeln aufzurufen?
    1000 Zeilen Code für ein popeliges Mastermind? - ich würd dir wirklich sehr empfehlen, es nochmal zu schreiben, und zwar richtig.
    Weil da hast du dir lauter Mist erarbeitet und angewöhnt.

    Zu einem Konzept-Ansatz habe ich ja schon verlinkt - aber hier nochmal: Variable als Objektnamen
    Kannst du meinen dortigen Ausführungen eiglich folgen?

    Aber seis drum: Die Suche-Ersetzten-Funktion vom Visualstudio ist überaus leistungsfähig - damit kriegt man das recht schnell hin.

    Aber vorher Backup machen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Danke habs schon hinbekommen....war Gott sei dank nur in einigen Subs.
    Ja ich weis, ich programmiere auch noch nicht so lange und kenne nur die "Basics", speziellere Methoden usw. muss ich mir noch beibringen,
    deshalb ist mein Code sicherlich noch sehr unsinnig für den Profi...aber egal mein Programm funktionier einwandfrei und ich danke euch für eure Hilfe! :thumbsup:

    PS: was deinen verlinkten Thread angeht... Deine Anweisungen scheinen sehr professionel und ich kann ihnen leider nur schwer folgen ;)
    schade - weil der erste Teil ist der wichtigste, und es ist alles vollkommen trivial, was ich da sage:
    v.a. muss man auch fürs Mastermind-Spiel sich ein klein Datenmodell ausdenken:

    Beim Mastermind gibt es 2 Spieler: Den Frager und den Antworter.
    Es gibt glaub 6 Farben für die "Fragen", und 3(!) Farben für die Antworten (Schwarz, Weiß, leer)
    Und es gibt glaub 14 Datensätze, jeder Datensatz enthält 4 Plätze für Frage-Farben, und 4 Plätze für Antwort-Farben.

    Der erste Datensatz wird vom Antworter im Verborgenen eingegeben: Er setzt v.a. die FrageFarben, (und aus Gründen der einheitlichen Verarbeitbarkeit auch 4 Antwort-Farben - natürlich alle Schwarz)
    Die weiteren Datensätze werden gemeinsam eingegeben: Der Frager gibt die Fragefarben ein, der Antworter die Antwort-Farben.
    Beendet ist, wenn der letzte Datensatz identisch mittm ersten ist
    Dem zu folgen fällt dir schwer? Es ist einfach die Beschreibung der logischen Struktur von Mastermind - hat mit Code und Programm fast garnix zu tun, allenfalls, dass ich die 4 Frage-Farben und die 4 Antwort-Farben zusammenfasse als einen Spielzug oder auch Datensatz (das liesse sich im weiteren überaus elegant in Code abhandeln, aber so weit gehe ich noch garnet).

    Ich find das völlig einfach, und das schwierige anne Datenmodellierung kommt mir oft vor, ist, zu fassen, wie einfach es eigentlich ist: Man muss nur hingucken und sich merken, was man sieht. Und oben hab ich halt ein Mastermind-Spiel angeguckt.