Minima
Minima

Reputation: 133

Variable Value Passing to another Form, VB.NET

I do have Two Public Variables, each are from two different forms..

Form1.VB
Public UserNo As String

Form2.VB
Public MyUserNo As String

On my Form2.VB File, I assign value to the UserNo of Form1.VB

Form1.UserNo = MyUserNo

Whenever I access the Form1.VB, the Value of the MyUserNo got empty, What should I do? Both Forms are not closed.

I also tried to re-assign the value when I need to use it on the Form1.VB

UserNo = Form2.MyUserNo

Upvotes: 4

Views: 85340

Answers (9)

Raffaele Romano
Raffaele Romano

Reputation: 11

           'In frmMain i Start frmBase
    Dim f As New frmBase
    f.Text = "New caption for frmBase"
    f.ShowDialog(Me)

    'in frmBase i read and write a textbox

    Dim str As String = CType(Me.Owner, frmMain).txtRicetta.Text
    Console.WriteLine(str)

    CType(Me.Owner, frmMain).txtRicetta.Text = "12345"
    Console.WriteLine(CType(Me.Owner, frmMain).txtRicetta.Text)

Upvotes: 0

Suong Tran
Suong Tran

Reputation: 1

Use variable value as Public

For Example

In Form1:

Public Str1 as String

So in Form2 you can use:

Str2=Form1.Str1

Upvotes: 0

maniek207
maniek207

Reputation: 1

it work
add it to form what you want value in next form

Function getvariable()
    Return (VARIABLE)
End Function

In next form to get VARIABLE

VARIABLE2 = Form.getvariable()

Upvotes: 0

Camel Share
Camel Share

Reputation: 21

Try this:

[Form1.UserNo = form2.MyUserNo]

Upvotes: 0

Robert Cotton
Robert Cotton

Reputation: 11

What you need to do is create your variables in a module as private, then generate some assessors for them.

Example:

Module modVariables

Private strUserNoSTR as String = New String(String.Empty)
 Public Property getUserNoSTR() As String
        Get
            Return strUserNoSTR
        End Get
        Set(ByVal strUserNo As String)
            strUserNoSTR = strUserNo
        End Set
    End Property

    Private strMyUserNoSTR As String = New String(String.Empty)
    Public Property getMyUserNoSTR As String
        Get
            Return strMyUserNoSTR
        End Get
        Set(ByVal strMyUserNo As String)
            strMyUserNoSTR = strMyUserNo
        End Set
    End Property
End Module

After you generate the getter and setter public methods you can notice that your two private variables are within them, when you create the variables they are accessible from any form.

The reason why you keep losing the variables value is because when you try to access its value from another form (basically you're calling it from another class) the compiler has to create a new instance of that variable and when that happened the variable is set back to its original value which is of type empty string. Calling them from a module keeps them from being re-instantiated.

How To Use Them:

To get the value of strMyUserNo you call the getter of strMyUserNoSTR:

TextBox.Text = getMyUserNoSTR

To set the value of strMyUserNoSTR:

getMyUserNoSTR = someValuePlacedInThisVariable  'This sets it's value.
TextBox.Text = getMyUserNoSTR 'Now it's value is someValuePlacedInThisVariable.

Upvotes: -1

Arun Sharma
Arun Sharma

Reputation: 517

First Correct is Syntax is:

Form1.VB
Public UserNo As String

Form2.VB
Public MyUserNo As String

In Form1
UserNo=Form2.MyUserNo

Second Thing: First you should store some value in MyUserNo before storing it into UserNo. That's why you are getting empty value.

Upvotes: 7

Bilal Mrad
Bilal Mrad

Reputation: 91

If you don't call InitializeComponent(), your complete GUI is not going to render.

... InitializeComponent() Form1.UserNo = MyUserNo ...

Upvotes: 1

Joel Coehoorn
Joel Coehoorn

Reputation: 415735

You can have more than one instance of a form, you know. Forms are objects, just like anything else. You need a variable in each form to hold a reference to the instance of each form that you are using.

Upvotes: 1

Kiran1016
Kiran1016

Reputation: 914

Make the variable static/Shared and try again,it should work.

Upvotes: 1

Related Questions