2013-10-27 82 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应该担心。在这种情况下,实例解决方案是首选。 –

相关问题