Ben-H1
Ben-H1

Reputation: 1

Using a VB.NET variable between different forms

I am trying to use the VB.NET program settings to load a background image for every form every time the form is loaded. So far I've managed to get the program to set the background in one form, and that changes the background for every other form. However, when each form is closed and re-opened while the program is running, the background changes back to the default one. I need to somehow change the background once and load it every time the form is opened, so that it doesn't switch back every time the form is re-opened while the program is running. I think there is some way to do this using the My.Settings in VB.NET, but I'm not sure.

This is the code that changes the background for each form:

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

The PreviewBackgroundBox is used to show the user the image before they apply it, and then when they click apply then the image is taken from the PreviewBackgroundBox and set as the background for all the forms.

Could someone help me with this?

Thanks!

Upvotes: 0

Views: 74

Answers (1)

Olivier Jacot-Descombes
Olivier Jacot-Descombes

Reputation: 112352

Basically you need a dictionary remembering the image is to be displayed for each form. You could store such a dictionary in a module together with methods to handle the logic involved

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

Note: Dictionaries store some data and associate it with a key that is used to retrieve this data. Here I would use the form's name as Key. You could also use the form's type GetType(Form1) or Me.GetType() and use a Dictionary(Of Type, Image) instead.

Whenever the user selects another image call SetImage in order to remember it. When a form is opened call GetImage to get the remembered image.

Upvotes: 2

Related Questions