2013-10-27 80 views
1

我想知道如何從Form1上值傳遞到另一種形式的公共子。 問題是它說「在這種情況下它不可訪問,因爲它是'私人'。」VB.Net將值傳遞給另一種形式

我試圖改變表1私人小組到公用Sub但仍相同的錯誤。我應該如何使它工作?

Public Class Form1 
Dim test(), text1 As String 
Const asd = "abcabc" 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    text1 = Space(LOF(1)) 
    test = Split(text1, asd) 
    HOST = test(1) 
End Sub 

,我想HOST =試驗(1)值傳遞給另一種形式

Public Class Form2 

Public Sub Check() 
    'get the value to here 
End Sub 
+2

我也遇到了這個問題,約一萬次的SO。這主要是由VB程序員問的,而不是C#程序員。一個WinForms形式就像任何其他Visual Basic類的類,你從一種形式值傳遞給另一個用同樣的方法,你會從任何一類值傳遞給其他類。只要不涉及多線程,就沒有區別。您可以通過構造函數參數(New),方法(Sub和Function)參數,屬性或甚至通過事件傳遞值。 –

回答

1

你可以把它作爲一個參數:

Public Sub Check(valueToCheck as String) 
    'get the value to here 
End Sub 

或者對創建屬性窗口2接受它:

private _HostOrSomething As String = "" 
Friend Property HostOrSomething As String 
    Get 
     Return _HostOrSomething 
    End Get 
    Set(ByVal value As String) 
     _HostOrSomething = value 
    End Set 

在這種情況下,次檢查可以使用_HostOrSomething,因爲它是本地變量。要使用這些:

HOST = Test(1) 
frm2.Check(HOST) 

HOST = Test(1) 
frm2.HostOrSomething = HOST 
frm2.Check 
+0

那麼所有這些代碼只能用於表單2?或者什麼也可以形成1? – rip2444

+0

只是改變'Sub Check'來取得和第一個樣本類似的參數,然後傳遞你想要的值作爲參數。 – Plutonix

-2

您可以使用全局變量從一個從另一個

 Dim A As New Integer= 10 

這裏傳遞數據,你如何聲明全局的類可以被定義應用程序的任何地方。

Public Class GlobalVariables 
Public Shared INTver As Integer 
End Class 

以及您如何使用全局變量來存儲答案就在這裏

GlobalVariables.INTver= A 

把這個線在你的「女貞子」,你可以訪問變量到您的任何形式,是在你的WINDOWS應用程序。

+1

「*冷靜下來不要擔心*」?不需要態度或光顧這裏。這個問題幾乎在4年前就被問及(並得到回答)。然而,你建議使用全局變量(OP應該合理擔心的事情)。 –

+0

_「你必須使用全局變量」_ - 誰說你_ **有**使用全局變量? (事實上​​它根本不是全球性的,它們仍然受到這個階級的約束 - 只是不是一個實例)。還有很多其他更好的方法。在這種情況下,使用共享變量無效,如果使用不當,實際上可能會中斷程序的預期流程。我同意@DavidMakogon,OP應該擔心。在這種情況下,實例解決方案是首選。 –

相關問題