Form Hintergrund Entfernen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Luftpost.

    Form Hintergrund Entfernen

    Guten Abend :)

    Ich versuche schon vergebens einen gewählten Hintergrund zu entfernen.

    Es gibt 2 Schaltflächen in meinem Tool.
    Zum einen "Hintergrund Bild laden" dies wird in die Settings wie über Image.FromFile als String gespeichert.
    Das Bild erscheint auch, soweit klappt es auch :)

    Allerdings möchte Ich wenn der Benutzer auf "Zurücksetzen" klickt, dass das Hintergrund Bild einfach entfernt wird.

    Ich habe bereits diverse Versuche unternommen.

    VB.NET-Quellcode

    1. Main.BackgroundImage = Image.FormFile("")


    oder auch

    VB.NET-Quellcode

    1. Main.BackgroundImage.Dispose()
    2. Main.BackgroundImage = Nothing


    aber auch

    VB.NET-Quellcode

    1. Main.BackgroundImage = Nothing


    Diese 3 Versuche haben zu keinem Ergebnis geführt :/

    Gibt es eine Methode die es mir ermöglicht das Bild wieder zu Entfernen oder muss es zwingend durch ein anderes Ersetzt werden? :/

    Bitte um Eure Hilfe :)
    Ich nehme an, Main ist eine zweite Form und falsch aufgerufen. Schau dir mal dieses Tutorial an: Dialoge: Instanziierung von Forms und Aufruf von Dialogen

    Du musst immer erst eine Instanz der Form erstellen. BackgroundImage = Nothing ist schon korrekt. Probiere doch mal, den Text der Form zu ändern, das wird genauso nicht gehen.
    Vollzitat entfernt. ~Trade

    @ichduersie Vielen Dank erstmal für deine Antwort :)

    Da muss Ich dich leider Enttäuschen :)
    Denn Ich habe eben über die Options.vb, der Main.vb einen neuen Namen gegeben, sprich den Text verwendert :)

    Vollzitat entfernt. ~Trade

    @RodFromGermany Vielen Dank erstmal für deine Antwort :)

    Main.vb ist die Startform die aufgerufen wird, über Option.vb welches die Einstellungen darstellt, kann man die Farbe der Form ändern oder eben ein Hintergrund Bild verwenden :)

    Mit der Farbe war das kein Problem, jedoch gibt s noch das Problem mit dem Hintergrund Bild :/
    Wenn Ich ein Bild verwenden kann welches Ich über OFD (OpenFileDialog) hole, sollte es doch auch die Möglichkeit geben es wieder entfernen zu können :/

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

    Luftpost schrieb:

    Startform
    Ist Main der Name der Klasse (Public Class Main) oder ist Main die Instanz, die per New erzeugt oder per Me übergeben wurde?
    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!
    Vollzitat entfernt. ~Trade

    So heisst die Form :D

    VB.NET-Quellcode

    1. Public Class Main
    2. End Class

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

    Vollzitat entfernt. ~Trade

    Dein Post hilft nicht gerade, da Ich es mir angeschaut ab :)

    Alles andere welches Ich per Option.vb über Main ändere Funktioniert tadellos, nur eben die BackgroundImage nicht.
    Daher ist eine Instanziierung einer Form nicht notwendig!

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

    Luftpost schrieb:

    Daher ist eine Instanziierung einer Form nicht notwendig!
    Ohne Instanz geht es nicht,
    gugst Du hier noch mal ganz genau rein.
    Solltest Du danach immer noch dieser Meinung sein, wirst Du hier wohl keine qualifizierte Hilfe bekommen, denn wir alle arbeiten mit Instanzen.

    RodFromGermany schrieb:

    oder ist Main die Instanz, die per New erzeugt oder per Me übergeben wurde?



    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!

    Luftpost schrieb:

    Daher ist eine Instanziierung einer Form nicht notwendig!

    Falsch. Eine Instanziierung ist immer notwendig. Das es auch ohne in VB funktioniert ist absoluter Schwachsinn. Mach es also in jedem Fall gleich richtig.

    Bezüglich des Problems, hast du versucht einfach einen anderen Hintergrund zu setzen? Also statt das Bild zu entfernen einfach eine Hintergrundfarbe setzen? Ich hab gerade keine Möglichkeit um zu schauen ob es geht, aber es wäre ja einen Versuch wert.
    @Vainamo V: Das bringt nichts. Das Bild wird drüber gezeichnet. Es würde ja auch gehen, wenn er das BackgroundImage auf Nothing setzen würde, aber dafür müsste er eben eine Instanz der Form erstellen, sonst läuft da nichts.

    Genau wegen so einem Zeug hasse ich Microsoft: Die wollten etwas einfacher machen und haben etwas geschaffen, was vollkommener ************ ist. Genau das gleiche wie mit Option Strict. Das Problem ist halt, dass der unerfahrene User dann auch seine Fehler nicht einsieht, da er nicht über ausreichend Fachwissen verfügt und es ja auch so geht.
    Hallo,

    bitte unterlasse das vollständige Zitieren eines Beitrags, wenn dieser über Dir steht. Dies ist nach Boardregeln nicht erlaubt und wirkt unübersichtlich. Du kannst stattdessen die @-Schreibweise (@'RodFromGermany') verwenden.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @ichduersie Vielen Dank für deinen Hinweis :)
    Ich bin noch genereller Anfänger und Komplexe System brauchen auch daher mehr Erfahrungen :)
    Ich lerne generell aus Fehler und das recht Schnell, jedoch ist bisher, so scheint es mir, die Dot.Net Anwendung einfacher, könnte aber auch daran liegen das Ich nicht wirklich mit den anderen Sprachen gelernt habe :/

    @RodFromGermany Danke auch Dir für deinen Hinweis :)
    Ich dachte natürlich das es auch ohne geht, scheinbar muss Ich es entweder so Lösen oder Ich gehe einen anderen Weg der Sprache.
    Ist es da generell bei allen Sprachen der Fall oder nur bei Dot.Net Anwendungen?

    Gibt es denn hierzu lande eine bessere Methode oder bessere Programmier Sprache?
    Ich Lerne schnell ohen das Ich Bücher lesen muss :D
    Kaum zu glauben aber wahr. :)

    Bisher wie Ich es iben schon erwähnte habe Ich mich nur mit der Dot.Net Variante auseinander gesetzt.

    Wäre Euch sehr Dankbar wenn Ich mir Persönlich als nachricht sagen könntet bzw. Empfehlen könntet auf Welche Sprache Ich oder besser Ihr euch einspielen würdet :)

    Gerne bin Ich auch für Diskussionen sehr offen ;)
    Bleib doch bei einer .NET-Sprache (egal ob C# oder Basic). Das ganze nennt sich halt Objektorientierung und das findest du auch in anderen Sprachen, bspw. C++ oder JAVA. Ich habe sechs Jahre lang mit Basic & C# gearbeitet, bis ich den Umstieg auf C++ gewagt habe. Das komplette Framework ist sehr einfach und daher gut für Anfänger geeignet, jedoch gibt es nun mal einige Sachen beim Basic-Compiler, wo man das Gefühl hat, dass da jemand nicht wirklich mit gedacht hat (s. obigen Post).

    Wie gesagt, dein Problem lässt sich relativ einfach lösen. Im Grunde genommen reicht es, wenn du folgendes schreibst:

    VB.NET-Quellcode

    1. Public Class Main
    2. Dim meineZweiteForm As New Form2
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. meineZweiteForm.BackgroundImage = Nothing
    5. End Sub
    6. End Class​

    Natürlich musst du den Quellcode so abändern, dass er auf deine Variablennamen passt, aber das wars schon. Du musst einfach eine Instanz der Form erstellen, wie ein String. Du kannst ja auch nicht einfach sagen:

    VB.NET-Quellcode

    1. ​Integer = 5
    2. 'oder
    3. String = "abc"

    Du musst auch von davon immer eine Instanz erstellen:

    VB.NET-Quellcode

    1. Dim i As Integer = 5
    2. Dim name As String = "abc"


    LG :)
    @ichduersie Ihr liegt ja der Hund etwas begraben :(
    Meine main Form ist ja die, die sofort gestartet wird und über options.vb, welches Ich per ShowDialog(Me) aufrufe wird das Hintergrundbild erstellt, entfernen lässt es sich nur nicht :D

    Vielleicht bin Ich auch gerade etwas zu Doof :D
    Achso, ich glaube, solangsam verstehe ich dein Problem. Du willst über die Options-Form das Hintergrundbild der Main-Form ändern? Dann nutze die Parent-Eigenschaft der Options-Form. WICHTIG: Dies geht nur, wenn du das Me im ShowDialog angibst. Wenn du es weglässt, funktioniert es nicht.
    @ichduersie Vielen Dank das werd Ich einmal austesten :)

    Erstmal Herzlichen Dank an Dich und an alle anderen die Mir informationen zu geschoben haben :D

    Thema lass Ich mal noch als Unerledigt falls das Ergebnis doch nicht klappte :D