2013-01-20 44 views
3

我有兩個公共變量,各自爲兩種不同的形式..變量值傳遞給另一種形式,VB.Net

Form1.VB 
Public UserNo As String 

Form2.VB 
Public MyUserNo As String 

在我Form2.VB文件,我將值分配到Form1的UserNo .VB

Form1.UserNo = MyUserNo 

每當我訪問Form1.VB時,MyUserNo的值變空了,我該怎麼辦?這兩個表單都沒有關閉。

我也試圖重新分配的價值,當我需要使用它的Form1.vb的

UserNo = Form2.MyUserNo 

回答

0

使變量靜態/共享,然後再試一次,它應該工作。

+0

其需求是公共和共享 – Dman

1

你可以有一個表單的多個實例,你知道的。表單是對象,就像其他任何東西一樣。您需要每個表單中的變量來保存對您正在使用的每個表單的實例的引用。

0

試試這個:

[Form1.UserNo = form2.MyUserNo] 
1

如果你不調用的InitializeComponent(),您的完整的GUI不會渲染。

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

6

第一個正確的語法是:

Form1.VB 
Public UserNo As String 

Form2.VB 
Public MyUserNo As String 

In Form1 
UserNo=Form2.MyUserNo 

第二件事: 首先,你應該存儲在將它存儲到UserNo之前,MyUserNo中有一些值。 這就是爲什麼你得到空值。

-1

你需要做的是在一個模塊中創建你的變量作爲私有變量,然後爲它們生成一些評估者。

例子:

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 

後生成的getter和setter的公共方法,你可以發現你的兩個私有變量都在其中,在創建變量他們不受任何形式的訪問。

你繼續失去變量值的原因是因爲當你嘗試從另一個表單訪問它的值時(基本上你是從另一個類調用它),編譯器必須創建該變量的一個新實例,發生該變量回到其原始值,其類型爲empty string。從模塊調用它們使它們不會被重新實例化。

如何使用它們:

要獲得strMyUserNo的價值,你叫strMyUserNoSTR的消氣:

TextBox.Text = getMyUserNoSTR 

要設置strMyUserNoSTR值:

getMyUserNoSTR = someValuePlacedInThisVariable 'This sets it's value. 
TextBox.Text = getMyUserNoSTR 'Now it's value is someValuePlacedInThisVariable. 
相關問題