tags:

views:

60

answers:

6

can we have a single global variable which can be manipulated by multiple forms

+2  A: 

Hi there.

In short, yes. You can have a global variable in a module (.mod) file or a class (.vb) file.

Module Module2

    Public variable As String = "Testing"

End Module

Cheers. Jas.

Jason Evans
A: 

Yes, it can be done. If you declare it as shared it will exist in only one instance.

Public Class SomeClass

    Public Shared SomeField As String

End Class

I would, however, recommend to wrap access to the field into a property:

Public Class SomeClass

    Private Shared _someValue As String
    Public Shared Property SomeProperty() As String
        Get
            Return _someValue
        End Get
        Set(ByVal value As String)
            _someValue = value
        End Set
    End Property    

End Class

By wrapping it into a property you will make it easier to troubleshoot problems around the value in case such scenarios would appear in the future.

Fredrik Mörk
Good point, forgot about 'Shared'.
Jason Evans
+1  A: 

Declare a variable like this:

Public Shared myVariable as Type

and access it from any form.

Mikael Svenson
A: 

What you are looking for is the "singleton pattern".

But first, you should ask yourself if you really need it. Maybe this variable could be passe as a parameter to a function or a property.

the_lotus
A: 

You can access a single variable from any form, if it is declared as public.

If you are defining it in form1 and want to use it in form2, then from inside form2 you can call the variable as - form1.<*variable_name*>

Take an example-

Form1 code

Public Class Form1

Public a As Integer = 10

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Form2.Show()
End Sub

End Class

Form 2 code Public Class Form2

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    MsgBox(Form1.a)
End Sub

End Class

Arjun Vasudevan
A: 

Use

Public x As Integer 

On any Of the Forms and then when you want to use that variable on other form then you can type the form name and then a dot and then the variable name

like this

form1.x

Cheers!!!

Rishabh