2016-05-23 10 views
0

Ich versuche, die VB.NET-Programmeinstellungen zu verwenden, um ein Hintergrundbild für jedes Formular jedes Mal zu laden, wenn das Formular geladen wird. Bis jetzt habe ich es geschafft, dass das Programm den Hintergrund in einem Formular setzt, und das ändert den Hintergrund für jedes andere Formular. Wenn jedoch jedes Formular geschlossen und erneut geöffnet wird, während das Programm ausgeführt wird, wird der Hintergrund auf den Standardwert zurückgesetzt. Ich muss den Hintergrund irgendwie einmal ändern und ihn jedes Mal laden, wenn das Formular geöffnet wird, damit es nicht jedes Mal umschaltet, wenn das Formular erneut geöffnet wird, während das Programm ausgeführt wird. Ich denke, es gibt eine Möglichkeit, dies mit den My.Settings in VB.NET zu tun, aber ich bin mir nicht sicher.Verwenden einer VB.NET-Variable zwischen verschiedenen Formularen

Dies ist der Code, der den Hintergrund für jede Form ändert: wird

Me.BackgroundImage = PreviewBackgroundBox.Image 
MainForm.BackgroundImage = PreviewBackgroundBox.Image 
LogInForm.BackgroundImage = PreviewBackgroundBox.Image 

Die PreviewBackgroundBox verwendet, um dem Benutzer das Bild zu zeigen, bevor sie sie anwenden, und dann, wenn sie anwenden klicken dann wird das Bild aufgenommen von die PreviewBackgroundBox und als Hintergrund für alle Formulare festgelegt.

Könnte mir jemand dabei helfen?

Danke!

+0

Ist 'PreviewBackgroundBox' ein Name einer Formularklasse? – Plutonix

+0

'PreviewBackgroundBox' ist eine PictureBox im Formular –

Antwort

2

Im Grunde brauchen Sie ein Wörterbuch, das sich daran erinnert, dass das Bild für jedes Formular angezeigt werden soll. Sie könnten speichern ein solches Wörterbuch in einem Modul zusammen mit Methoden, um die Logik zu behandeln beteiligt

Private imageDict As New Dictionary(Of String, Image) 

Public Sub SetImage(ByVal formName As String, ByVal img As Image) 
    imageDict(formName) = img 
End Sub 

Public Function GetImage(ByVal formName As String) As Image 
    Dim img As Image 
    If imageDict.TryGetValue(formName, img) Then 
     Return img 
    End If 
    Return Nothing 'Or return a default image 
End Function 

Hinweis: Wörterbücher einige Daten speichern und sie mit einem Schlüssel verknüpfen, die verwendet wird, diese Daten abzurufen. Hier würde ich den Namen des Formulars als Schlüssel verwenden. Sie können auch den Formulartyp GetType(Form1) oder Me.GetType() verwenden und stattdessen einen Dictionary(Of Type, Image) verwenden.

Immer wenn der Benutzer einen anderen Bildanruf SetImage auswählt, um sich daran zu erinnern. Wenn ein Formular geöffnet ist, rufen Sie GetImage, um das gespeicherte Bild zu erhalten.

Verwandte Themen