3

我确实有两个公共变量,每个都来自两种不同的形式..

Form1.VB
Public UserNo As String

Form2.VB
Public MyUserNo As String

在我的 Form2.VB 文件中,我为 Form1.VB 的 UserNo 赋值

Form1.UserNo = MyUserNo

每当我访问 Form1.VB 时,MyUserNo 的值为空,我该怎么办?两个表格都没有关闭。

当我需要在 Form1.VB 上使用它时,我还尝试重新分配该值

UserNo = Form2.MyUserNo
4

9 回答 9

6

首先正确的是语法是:

Form1.VB
Public UserNo As String

Form2.VB
Public MyUserNo As String

In Form1
UserNo=Form2.MyUserNo

第二件事:首先,您应该先在 MyUserNo 中存储一些值,然后再将其存储到 UserNo 中。这就是为什么你得到空值的原因。

于 2014-02-23T04:55:21.287 回答
1

你知道,你可以拥有多个表单实例。形式是对象,就像其他任何东西一样。您需要在每个表单中都有一个变量来保存对您正在使用的每个表单的实例的引用。

于 2013-01-20T18:38:11.387 回答
1

如果您不调用 InitializeComponent(),您的完整 GUI 将不会呈现。

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

于 2013-11-06T13:46:42.383 回答
1

将变量设为静态/共享并重试,它应该可以工作。

于 2013-01-20T18:25:52.147 回答
0

您需要做的是在模块中将变量创建为私有变量,然后为它们生成一些评估器。

例子:

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 的 getter:

TextBox.Text = getMyUserNoSTR

设置 strMyUserNoSTR 的值:

getMyUserNoSTR = someValuePlacedInThisVariable  'This sets it's value.
TextBox.Text = getMyUserNoSTR 'Now it's value is someValuePlacedInThisVariable.
于 2014-12-31T02:21:38.640 回答
0

尝试这个:

[Form1.UserNo = form2.MyUserNo]
于 2013-01-20T20:48:48.167 回答
0
           '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)
于 2020-06-21T13:13:39.157 回答
0

使用变量值作为公共

例如

在 Form1 中:

Public Str1 as String

所以在 Form2 中你可以使用:

Str2=Form1.Str1
于 2019-06-04T12:29:02.413 回答
0

它可以
添加它以在下一个表单中形成您想要的值

Function getvariable()
    Return (VARIABLE)
End Function

在下一个表格中获得 VARIABLE

VARIABLE2 = Form.getvariable()
于 2019-01-02T19:22:18.840 回答